溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么在Python中使用matplotlib繪圖

發(fā)布時(shí)間:2021-05-06 16:33:43 來(lái)源:億速云 閱讀:187 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

今天就跟大家聊聊有關(guān)怎么在Python中使用matplotlib繪圖,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

python有哪些常用庫(kù)

python常用的庫(kù):1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

Matplotlib 是 Python 的繪圖庫(kù)。 它可與 NumPy 一起使用,提供了一種有效的 MatLab 開(kāi)源替代方案。 它也可以和圖形工具包一起使用,如 PyQt 和wxPython。

pip3 install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
import matplotlib.pyplot as plt

顯示中文

借助全局參數(shù)配置字典rcParams,只需要在代碼開(kāi)頭,添加如下兩行代碼即可

plt.rcParams['font.sans-serif'] = ['SimHei'] 
plt.rcParams['axes.unicode_minus'] = False

同時(shí)還可以設(shè)置字體,常見(jiàn)字體:

font.family  字體的名稱(chēng)
sans-serif   西文字體(默認(rèn))
SimHei       中文黑體
FangSong     中文仿宋
YouYuan      中文幼圓
STSong       華文宋體
Kaiti        中文楷體
LiSu         中文隸書(shū)

字體風(fēng)格

plt.rcParams["font.style"] = "italic"

繪制子圖

plt.subplot2grid()

plt.subplot2grid((3,3),(0,0),colspan=3)
""""""
plt.subplot2grid((3,3),(1,0),colspan=2)
""""""
plt.subplot2grid((3,3),(1,2),rowspan=2)
""""""
plt.subplot2grid((3,3),(2,0))
""""""
plt.subplot2grid((3,3),(2,1))
plt.show()

怎么在Python中使用matplotlib繪圖
2. plt.subplot()

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 畫(huà)第1個(gè)圖:折線圖
x=np.arange(1,100)
plt.subplot(221)
plt.plot(x,x*x)
# 畫(huà)第2個(gè)圖:散點(diǎn)圖
plt.subplot(222)
plt.scatter(np.arange(0,10), np.random.rand(10))
# 畫(huà)第3個(gè)圖:餅圖
plt.subplot(223)
plt.pie(x=[15,30,45,10],labels=list('ABCD'),autopct='%.0f',explode=[0,0.05,0,0])

# 畫(huà)第4個(gè)圖:條形圖
plt.subplot(224)
plt.bar([20,10,30,25,15],[25,15,35,30,20],color='b')
plt.show()

怎么在Python中使用matplotlib繪圖

matplotlib繪圖設(shè)置不顯示邊框、坐標(biāo)軸

對(duì)于有些圖形我們希望通過(guò)隱藏坐標(biāo)軸來(lái)顯得更加美觀

plt.xticks([])
plt.yticks([])
ax = plt.subplot(2,5,1)
# 去除黑框
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)

實(shí)例:

#author:https://beishan.blog.csdn.net/
import matplotlib.pyplot as plt
for i in range(0,10):
    fig = plt.gcf()
    fig.set_size_inches(12,6)
    ax = plt.subplot(2,5,i+1)
    # 去除坐標(biāo)軸
    plt.xticks([])
    plt.yticks([])

    # 去除黑框
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.spines['bottom'].set_visible(False)
    ax.spines['left'].set_visible(False)
    # 設(shè)置各個(gè)子圖間間距
    plt.subplots_adjust(left=0.10, top=0.88, right=0.65, bottom=0.08, wspace=0.02, hspace=0.02)
    ax.imshow(Xtrain[i],cmap="binary")

怎么在Python中使用matplotlib繪圖

提高分辨率

如果感覺(jué)默認(rèn)生成的圖形分辨率不夠高,可以嘗試修改 dpi 來(lái)提高分辨率

plt.figure(figsize = (7,6),dpi =100)

設(shè)置繪圖風(fēng)格

有時(shí)我們會(huì)覺(jué)得matplotlib默認(rèn)制作出來(lái)的圖片太樸素了,不夠高級(jí),其實(shí)開(kāi)發(fā)者也內(nèi)置了幾十種主題讓我們自己選擇,只要使用plt.style.use(‘主題名')指定主題即可

plt.style.use('ggplot')

常用的樣式有

Solarize_Light2
_classic_test_patch
bmh
classic
dark_background
fast
fivethirtyeight
ggplot
grayscale
seaborn
seaborn-bright
seaborn-colorblind
seaborn-dark
seaborn-dark-palette
seaborn-darkgrid
seaborn-deep
seaborn-muted
seaborn-notebook
seaborn-paper
seaborn-pastel
seaborn-poster
seaborn-talk
seaborn-ticks
seaborn-white
seaborn-whitegrid
tableau-colorblind10

添加標(biāo)題

plt.title("2020-2021北山啦粉絲數(shù)增長(zhǎng)圖")

顯示網(wǎng)格

plt.grid()
plt.grid(color='g',linewidth='1',linestyle='-.')

圖例設(shè)置

plt.legend(["2020","2021"],loc="best")

也可以給圖例添加標(biāo)題

plt.plot([1,3,5,7],[4,9,6,8],"ro--")
plt.plot([1,2,3,4], [2,4,6,8],"gs-.")
plt.legend(["2020","2021"],loc="best",title="標(biāo)題")
plt.title("2020-2021北山啦粉絲數(shù)增長(zhǎng)圖")

添加公式

有時(shí)我們?cè)诶L圖時(shí)需要添加帶有數(shù)學(xué)符號(hào)、公式的文字,

plt.text(11000,0.45,r'擬合曲線為$f(x) = x^2-4x+0.5$')

圖形交互設(shè)置

jupyter中的魔法方法

%matplotlib notebook 彈出可交互的matplotlib窗口
%matplotlib qt5 彈出matplotlib控制臺(tái)
%matplotlib inline 直接嵌入圖表,不需要使用plt.show()

保存圖片

plt.savefig("pic.png",dpi=100,bbox_inches="tight")

怎么在Python中使用matplotlib繪圖

讀取圖片

方法一

from PIL import Image
image = Image.open("./pic.png")
image.show()

怎么在Python中使用matplotlib繪圖

方法二

import matplotlib.pyplot as plt
X = plt.imread("./pic.png")
plt.imshow(X)

怎么在Python中使用matplotlib繪圖

條形圖

def f(t):
    return np.exp(-t) * np.cos(2*np.pi*t)
a = np.arange(0,5,0.02)

plt.subplot(211)
plt.plot(a,f(a))

plt.subplot(212)
plt.plot(a,np.cos(2*np.pi*a),'r--')

plt.show()

怎么在Python中使用matplotlib繪圖

b = np.arange(0,2,0.02)
plt.plot(b,np.sin(2*np.pi*b),'--',b,np.cos(2*np.pi*b),"*")

怎么在Python中使用matplotlib繪圖

散點(diǎn)圖

import numpy as np
import matplotlib.pyplot as plt

# Fixing random state for reproducibility
np.random.seed(19680801)


N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2  # 0 to 15 point radii

plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.show()

怎么在Python中使用matplotlib繪圖

帶表格的圖形

import numpy as np
import matplotlib.pyplot as plt


data = [[ 66386, 174296,  75131, 577908,  32015],
        [ 58230, 381139,  78045,  99308, 160454],
        [ 89135,  80552, 152558, 497981, 603535],
        [ 78415,  81858, 150656, 193263,  69638],
        [139361, 331509, 343164, 781380,  52269]]

columns = ('Freeze', 'Wind', 'Flood', 'Quake', 'Hail')
rows = ['%d year' % x for x in (100, 50, 20, 10, 5)]

values = np.arange(0, 2500, 500)
value_increment = 1000

# Get some pastel shades for the colors
colors = plt.cm.BuPu(np.linspace(0, 0.5, len(rows)))
n_rows = len(data)

index = np.arange(len(columns)) + 0.3
bar_width = 0.4

# Initialize the vertical-offset for the stacked bar chart.
y_offset = np.zeros(len(columns))

# Plot bars and create text labels for the table
cell_text = []
for row in range(n_rows):
    plt.bar(index, data[row], bar_width, bottom=y_offset, color=colors[row])
    y_offset = y_offset + data[row]
    cell_text.append(['%1.1f' % (x / 1000.0) for x in y_offset])
# Reverse colors and text labels to display the last value at the top.
colors = colors[::-1]
cell_text.reverse()

# Add a table at the bottom of the axes
the_table = plt.table(cellText=cell_text,
                      rowLabels=rows,
                      rowColours=colors,
                      colLabels=columns,
                      loc='bottom')

# Adjust layout to make room for the table:
plt.subplots_adjust(left=0.2, bottom=0.2)

plt.ylabel("Loss in ${0}'s".format(value_increment))
plt.yticks(values * value_increment, ['%d' % val for val in values])
plt.xticks([])
plt.title('Loss by Disaster')

plt.show()

怎么在Python中使用matplotlib繪圖

看完上述內(nèi)容,你們對(duì)怎么在Python中使用matplotlib繪圖有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI