python3-matplotlib基本使用(以折线图为例)
1、什么是matplotlib
Matplotlib 是 Python 中最受歡迎的數(shù)據(jù)可視化軟件包之一,支持跨平臺運(yùn)行,它是 Python 常用的 2D 繪圖庫,同時它也提供了一部分 3D 繪圖接口。Matplotlib 通常與 NumPy、Pandas 一起使用,是數(shù)據(jù)分析中不可或缺的重要工具之一。
Matplotlib 是 Python 中類似 MATLAB 的繪圖工具。MATLAB是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于數(shù)據(jù)分析、無線通信、深度學(xué)習(xí)、圖像處理與計(jì)算機(jī)視覺、信號處理、量化金融與風(fēng)險管理、機(jī)器人,控制系統(tǒng)等領(lǐng)域。
matplotlib 支持的圖形 https://matplotlib.org/stable/gallery/index.html
2、基礎(chǔ)使用(以下都以折線圖為例)
from matplotlib import pyplot as plt # 繪圖導(dǎo)入 pyplot 一般會重命名為plt # 展示每隔兩個小時的溫度變化 x = range(2,26,2) # [2,4,6,8 ... ,22,24] y = [15,13,14.5,17,20,25,26,26,24,22,18,15] # 繪圖 plt.plot(x,y) # 展示圖形 plt.show()
上面圖片存在的問題:
- 圖片的大小(想要高清大圖)
- 保存到本地
- 描述信息,比如x,y軸表示什么
- 調(diào)整刻度的間距
- 線條的樣式(顏色、透明度)
- 標(biāo)記出特殊的點(diǎn)(比如最高點(diǎn),最低點(diǎn))
- 給圖片加水印,防偽
3、設(shè)置圖片寬高、分辨率、xy軸刻度、保存圖片到本地
from matplotlib import pyplot as plt # 繪圖導(dǎo)入 pyplot 一般會重命名為plt# 展示每隔兩個小時的溫度變化 x = range(2,26,2) # [2,4,6,8 ... ,22,24] y = [15,13,14.5,17,20,25,26,26,24,22,18,15]""" figure 指的是我們畫的圖 figsize 寬 高 dpi 沒英寸多少個點(diǎn),點(diǎn)多了,放大后不會模糊,有鋸齒形 """ plt.figure(figsize=(20, 8), dpi=80)# 繪圖 plt.plot(x,y)# 設(shè)置x軸刻度 # plt.xticks(x) xticks_lables = [i/2 for i in range(4, 49)] # plt.xticks(xticks_lables) plt.xticks(xticks_lables[::3]) # 太密集了,可以每三個取一個 # 設(shè)置y軸刻度 plt.yticks(range(min(y), max(y)+1)) # 設(shè)置刻度顏色,設(shè)置刻度傾斜等 參考 https://blog.csdn.net/Poul_henry/article/details/82590392# 保存 # plt.savefig("./sig_size.png") # plt.savefig("./sig_size.svg") # 可以保存為svg矢量圖格式,放大不會有鋸齒# 展示圖形 plt.show()4、X,y軸顯示字符串并旋轉(zhuǎn)顯示
顯示10點(diǎn)到12點(diǎn)每分鐘氣溫變化
from matplotlib import pyplot as plt import randomx = range(0, 120) y = [random.randint(20, 35) for i in range(120)]plt.figure(figsize=(15, 8), dpi=80)plt.plot(x,y)# 調(diào)整x 軸的刻度 xtick_lables = ["10:{}".format(i) for i in range(60)] xtick_lables += ["11:{}".format(i) for i in range(60)]# plt.xticks(list(x)[::3], xtick_lables[::3],rotation=270) # rotation 旋轉(zhuǎn)的度數(shù) plt.xticks(list(x)[::3], xtick_lables[::3],rotation=60) # rotation 旋轉(zhuǎn)的度數(shù)yticks_lables = ["{}tem".format(i) for i in range(15, 40, 2)] plt.yticks(range(15, 40, 2), yticks_lables,rotation=60)plt.show()5、X,y軸顯示中文并設(shè)置字體大小
如果不設(shè)置,中文不能正常顯示
針對Windows ,字體存放位置 C:\Windows\Fonts
linux/mac可以參考: https://www.bilibili.com/video/BV1hx411d7jb?p=6
也可以參考: https://www.runoob.com/numpy/numpy-matplotlib.html
6、設(shè)置XY軸和標(biāo)題的描述信息并繪制網(wǎng)格
from matplotlib import pyplot as plt import random from matplotlib import font_managermy_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\SIMLI.TTF", size=12)x = range(0, 120) y = [random.randint(20, 35) for i in range(120)]plt.figure(figsize=(15, 8), dpi=80)plt.plot(x,y)# 調(diào)整x 軸的刻度 xtick_lables = ["10:{}".format(i) for i in range(60)] xtick_lables += ["11:{}".format(i) for i in range(60)]# plt.xticks(list(x)[::3], xtick_lables[::3],rotation=270) # rotation 旋轉(zhuǎn)的度數(shù) plt.xticks(list(x)[::3], xtick_lables[::3],rotation=60) # rotation 旋轉(zhuǎn)的度數(shù)yticks_lables = ["{}度".format(i) for i in range(15, 40, 2)] plt.yticks(range(15, 40, 2), yticks_lables,rotation=60,fontproperties=my_font)# 添加描述信息 plt.xlabel("時間",fontproperties=my_font) plt.ylabel("溫度 單位(℃)",fontproperties=my_font) plt.title("10點(diǎn)到12點(diǎn)每分鐘的氣溫變化情況",fontproperties=my_font)# 繪制網(wǎng)格 plt.grid(alpha=0.9) # alpha 可以調(diào)整透明度,數(shù)值越大越清晰plt.show()7、同時繪制出兩條折線并添加圖例、設(shè)置折線顏色,折線樣式
from matplotlib import pyplot as plt from matplotlib import font_manager""" a 是自己 b 是同桌 x 軸是年齡 y 軸是女朋友的數(shù)量 """ a = [1,0,2,1,5,2,3,6,9,5,1,2,3,1,2,3,2,1,2,1] b = [1,3,1,1,2,1,1,1,4,4,4,2,2,2,4,1,1,4,1,2]x = range(11, 31)my_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\SIMLI.TTF", size=12)# 設(shè)置圖形大小 plt.figure(figsize=(15, 8), dpi=80)# plot 增加 label 和 plt.legend() 可以顯示tuli # plot 增加 color 可以修改 線條顏色 # linestyle 線條風(fēng)格 linestyle 也適用于繪制網(wǎng)格 # - 實(shí)線 -- 虛線 -. 點(diǎn)劃線 : 點(diǎn)虛線 "" 留空或者空格無線條 # linewidth 線條粗細(xì) # alpha 透明度 plt.plot(x, a, label="自己", color="orange", linestyle="--", linewidth=3, alpha=0.3) plt.plot(x, b, label="同桌", color="#FF69B4", linestyle="-.",linewidth=6, alpha=0.6)# 設(shè)置x刻度 xtick_labels = ["{}歲".format(i) for i in x] plt.xticks(x, xtick_labels, fontproperties=my_font) plt.yticks(range(0,11))# 繪制網(wǎng)格 linestyle 也適用于繪制網(wǎng)格 plt.grid(alpha=0.6, linestyle="--")# 添加圖例 prop 顯示中文,只有這里是 prop其他地方都是 fontproperties # loc="upper left" 參數(shù)可以修改 圖例位置 默認(rèn)是右上 plt.legend(prop=my_font,loc="upper left")plt.show()8、標(biāo)記最高(低)點(diǎn),添加水印
其他 圖像添加image水印、圖像添加背景 可 參考 https://zhuanlan.zhihu.com/p/390880393
from matplotlib import pyplot as plt from matplotlib import font_manager""" a 是自己 b 是同桌 x 軸是年齡 y 軸是女朋友的數(shù)量 """ a = [1,0,2,1,5,2,3,6,9,5,1,2,3,1,2,3,2,1,2,1] b = [1,3,1,1,2,1,1,1,4,4,4,2,2,2,4,1,1,4,1,2]x = range(11, 31)my_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\SIMLI.TTF", size=12)# 設(shè)置圖形大小 plt.figure(figsize=(15, 8), dpi=80)# plot 增加 label 和 plt.legend() 可以顯示tuli # plot 增加 color 可以修改 線條顏色 # linestyle 線條風(fēng)格 linestyle 也適用于繪制網(wǎng)格 # - 實(shí)線 -- 虛線 -. 點(diǎn)劃線 : 點(diǎn)虛線 "" 留空或者空格無線條 # linewidth 線條粗細(xì) # alpha 透明度 plt.plot(x, a, label="自己", color="orange", linestyle="--", linewidth=3, alpha=0.3) plt.plot(x, b, label="同桌", color="#FF69B4", linestyle="-.",linewidth=6, alpha=0.6)# 設(shè)置x刻度 xtick_labels = ["{}歲".format(i) for i in x] plt.xticks(x, xtick_labels, fontproperties=my_font) plt.yticks(range(0,11))# 標(biāo)價最高點(diǎn), 標(biāo)記最高點(diǎn);注意:x軸和y軸的索引必須相對應(yīng) # mark表示圓圈標(biāo)記,edgecolors表示圓圈的顏色,s表示標(biāo)記點(diǎn)的大小 # plt.scatter(x[8], a[8], color='b') plt.scatter(x[8], a[8], color='b', marker='o', edgecolors='r', s=300)# 添加文本水印 其他 圖像添加image水印 圖像添加背景 可 參考 https://zhuanlan.zhihu.com/p/390880393 plt.text(x=15, #文本x軸坐標(biāo)y=5, #文本y軸坐標(biāo)s='hello world', #文本內(nèi)容rotation=15, #文字旋轉(zhuǎn)角度ha='center', #x=2.2是文字的左端位置,可選'center', 'right', 'left'va='center', #y=8是文字的低端位置,可選'center', 'top', 'bottom', 'baseline', 'center_baseline'alpha=0.5,fontdict=dict(fontsize=32,color='grey',family='monospace', #字體,可選'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'weight='light', #磅值,可選'light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black') #字體屬性設(shè)置 )# 繪制網(wǎng)格 linestyle 也適用于繪制網(wǎng)格 plt.grid(alpha=0.6, linestyle="--")# 添加圖例 prop 顯示中文,只有這里是 prop其他地方都是 fontproperties # loc="upper left" 參數(shù)可以修改 圖例位置 默認(rèn)是右上 plt.legend(prop=my_font,loc="upper left")plt.show()https://www.bilibili.com/video/BV1hx411d7jb?p=3
https://www.bilibili.com/video/BV1hx411d7jb?p=4
https://www.bilibili.com/video/BV1hx411d7jb?p=5
https://www.bilibili.com/video/BV1hx411d7jb?p=6 設(shè)置中文顯示
https://www.bilibili.com/video/BV1hx411d7jb?p=7
https://www.bilibili.com/video/BV1hx411d7jb?p=8
總結(jié)
以上是生活随笔為你收集整理的python3-matplotlib基本使用(以折线图为例)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue 单文件组件中,输入templat
- 下一篇: SQL server2017和ssms管