程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

使用python繪制折線圖

編輯:Python

前言

最近在完成一篇氣象預報的論文,涉及到深度學習與氣象繪圖。我覺得還是有必要寫一下我在這個過程中的一些經驗總結,借此機會與各位同道交流。

一、基礎命令

在我們使用深度學習時,肯定會用到繪圖命令,繪制loss與val_loss等等,以此查看模型的效果。

plt.plot(x,y,lw=,ls=,c=, alpha=, label=)

x:x坐標的數據

y:y坐標的數據

lw:指定線條寬度

ls:指定線條樣式,ls='-'為實線,ls='--'為虛斷線,ls='-.'為點虛線,ls=':'為虛線

c:指定線條顏色,c='r'為紅色,c='k'為黑色,c='y'為黃色

alpha:指定線條透明度,值越小越透明

label:指定線條的含義

代碼示例:

#導入庫
import matplotlib.pyplot as plt
import numpy as np
#設定畫布。dpi越大圖越清晰,繪圖時間越久
fig=plt.figure(figsize=(4, 4), dpi=300)
#導入數據
x=list(np.arange(1, 21))
y=np.random.randn(20)
#繪圖命令
plt.plot(x, y, lw=4, ls='-', c='b', alpha=0.1)
plt.plot()
#show出圖形
plt.show()
#保存圖片
fig.savefig("畫布")

繪圖結果:

二、根據Excel數據繪圖

在python中,有一個專門進行數據處理的庫包叫做pandas

# 導包
import pandas as pd
# 讀取excel文件
pd.read_excel('文件所在路徑')

提取excel中某一列數據:filename['列名'],返回值是一個列表。

取得excel中我們想要的數據後,下一步就是繪制:

...
# 第一步繪制畫布
fig=plt.figure(figsize=(7, 4), dpi=200)
# 第二步添加繪圖區.
# subplot命令是在畫布上添加一個繪圖區,括號裡的內容轉述為漢字為:“創建一個一行一列的繪圖區(一行一列就只有一個繪圖區),ax1是第一個繪圖區,facecolor用來設置畫布背景顏色,默認為白色
ax1 = fig.add_subplot(111, facecolor='green')

如果要創建一個兩行兩列(或者其他維度)的子圖區,分別為ax1,ax2,ax3,ax4:

ax1=fig.add_subplot(221)
ax2=fig.add_subplot(222)
ax3=fig.add_subplot(223)
ax4=fig.add_subplot(224)

效果如下:

三、合並一幅圖的x(或y)坐標軸以及添加圖例legend()

實現上圖的效果,重點在於ax2=ax1.twinx() ,ax2和ax1共用x軸,但是ax1使用左側y軸,ax2使用右側y軸:


fig=plt.figure(figsize=(7,4),dpi=200) # 新建畫布
ax1=fig.add_subplot(111) # 設置繪圖區
line1,=ax1.plot(times,temps,'r:',lw=1,label='氣溫') # 創建折線
bar1 =ax1.bar(times,rains,color='b',label='降水量') # 創建條狀
ax2=ax1.twinx() # 設置共用x軸
line2,=ax2.plot(times,pressures,'k-',lw=1.2,label='氣壓')
# legend用來設置圖例,還可以添加參數ncol='',該參數用來設置圖例的列數,用於對齊
plt.legend((line1,bar1,line2),('氣溫','降水量','氣壓'),loc='center left',frameon=False,framealpha=0.5)
ax1.set_xlabel('時間 \ h') # 設置x軸
ax1.set_ylabel('氣溫(℃)\降水量(mm)') # 設置左側y軸
ax2.set_ylabel('氣壓(hPa)') # 設置右側y軸
plt.title("----") # 設置圖的名稱
plt.show()

四、調節字體樣式

通過字典的方式調節,在字典中存儲需要修改的的參數名稱和指定值大小,還可以存放更多參數:

font={'size':30,'color':'red'}
ax.set_xlabel('--',fontdict=font)
ax.set_ylabel('--',fontdict=font)

五、繪制網格線

ax.grid() # 開啟x和y軸的網格
ax.grid(ls='--') # 開啟x和y軸的虛線網格
ax.grid(True,axis='x') # 開啟x軸的網格
ax.grid(True,axis='y') # 開啟y軸的網格

六、合並兩幅圖的坐標軸

按照以下方式設置畫布:

fig,((ax1),(ax2))=plt.subplots(2,1,figsize=(5,5),dpi=200,sharex='all')
fig.subplots_adjust(hspace=0)

七、不常用的函數

1.ax.set_ylim()、ax.set_xlim()

在共享x(y)軸時,兩邊y(x)軸的零刻度是不一致的,xlim和ylim用來設置坐標軸的范圍。

2.set_minor_locator()、set_major_locator()

set_minor_locator用來在主刻度的基礎上設置或修改副刻度的大小,set_major_locator用來修改主刻度的單位顯示。使用前,必須引入庫包:

import matplotlib.ticker as ticker

舉例說明:

(1)此處設定副刻度為0.1個單位。

ax1.yaxis.set_minor_locator(ticker.MultipleLocator(0.1))

(2) 將右側主刻度設置為每10個單位顯示。

ax2.yaxis.set_major_locator(ticker.MultipleLocator(10))


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved