首頁 > 軟體

python畫圖時linestyle,color和loc引數的設定方式

2022-11-28 22:00:42

python畫圖時linestyle,color和loc引數的設定

本人沒有看過專門介紹matplotlib的書籍,所以一直以來對一些畫圖的風格不是很清楚,今天總結一下linestyle,color和loc,供那些像我一樣沒看過這方面介紹的人使用。

linestyle和color是matplotlib做表時常用的兩個引數,只要是需要線條的,不論是主圖,還是新增的格線,基本上是都會遇到的。loc則是用來確定位置的,一般新增圖例的時候回用到。

顏色字元(color)

字元代表顏色
r紅色
b藍色
g綠色
w白色
c青色
m洋紅
y黃色
k黑色

風格字元(linestyle)

字元代表風格
- (一個連字元)實線
– (兩個連字元)虛線
-.點劃線
點虛線
’ ’留空,空格

loc 引數(以matplotlib新增圖例為例說明位置)

loc stringloc code位置
"best"0右上角(預設)
“upper right”1右上角
“upper left”2左上角
“lower left”3左下角
“lower right”4右下角
"right"5中右側
“center left”6中左側
“center right”7中右側
“low center”8中下方
“upper center”9中上方
“center”10中間

python畫圖基礎

python用於畫圖常用matplotlib和seaborn**

1.matplotlib

使用前需要匯入api

import matplotlib.pyplot as plt

1.1繪製基本影象

1.1.1折線圖

1.準備資料

import random
x = range(60)
y = [random.uniform(15,18) for i in x]
#random.uniform 中引數即為取值範圍。

2.建立畫布

plt.figure(figsize=(20,5),dpi=100)
#其中引數figsize即為影象大小,dpi為解析度。

3.繪製影象

plt.plot(x,y)

4.影象顯示

plt.show()

1.1.2 散點圖

重複1,2,4步

第3步改為plt.scatter(x,y)

影象顯示:

1.1.3柱狀圖

重複1,2,4步

第3步改為plt.bar(x,y)

影象顯示:

1.1.4 直方圖

重複1,2,4步

第三步改為plt.hist(y)

只傳入一個y引數,表示y的分佈情況

影象顯示:

也可以傳入x引數,表示x的分佈情況(但因x為0~59,所以沒有意義)

影象顯示:

1.2實現一些其他功能

我們用自己建立的資料作為上海市早上10時~11時的溫度變化

#1.資料準備
x_shanghai = x
y_shanghai = y

#2.建立畫布
plt.figure(figsize=(20,5),dpi=100)

#3.繪製影象
plt.plot(x_shanghai,y_shanghai)
#3.1新增x、y的刻度
x_ticks = ["10:{}分"format(i) for i in x_shanghai]
y_ticks = range(40)
#3.2修改x、y的刻度
plt.xticks(x_shanghai[::5],x_ticks[::5])
#plt.xticks第一個引數是刻度,第二個引數是刻度標籤(plt.yticks也一樣)
plt.yticks(y_ticks[::5])
#五分鐘取一個刻度
#3.3新增網格顯示
plt.grid(True,linestyle = "--",alpha = 0.6)
引數linestyle為格線的種類,alpha為格線深淺

影象顯示:

1.3 在一個座標系中畫出多個影象

#0 準備資料
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]

#1 建立畫布
plt.figure(figsize=(20,5),dpi=100)

#2 繪製影象
plt.plot(x,y_shanghai,label = "上海")
#畫一條標籤為上海的影象
plt.plot(x,y_beijing,color = 'r',linestyle="--",label="北京")
#畫一條標籤為北京的影象
plt.legend(loc ="best")
#plt.legend()函數設定圖例位置

#2.1 新增x,y刻度
x_shanghai_ticks = ["10點{}分".format(i) for i in x] 
y_shanghai_ticks = range(40)

#2.2 修改x,y刻度
plt.xticks(x[::5],x_shanghai_ticks[::5])
plt.yticks(y_shanghai_ticks[::5])

#2.3 新增網格顯示
plt.grid(True , linestyle = "--",alpha = 0.6)

#2.4 新增標籤資料
plt.xlabel("時間",fontsize=20)
plt.ylabel("溫度",fontsize=20)
plt.title("某市某日10時至11時的溫度變化折線圖",fontsize=20)
#fontsize為字型大小

#  影象儲存
plt.savefig("test.png")

#3 影象顯示
plt.show()

影象顯示:

1.4多座標作圖

#0 準備資料
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]

#1 建立畫布
plt.figure(figsize=(20,8),dpi=100)
# fig,axes=plt.subplot(nrows=1,ncols=2,figsize=(20,8),dpi=100)

#2 繪製影象
# axes[0].plot(x,y_shanghai,label = "上海")
# axes[1].plot(x,y_beijing,color = 'r',linestyle="--",label="北京")
f1=plt.subplot(1,2,1)#將figure分成一行兩列,第三個數位代表的是第一個位置的圖
f1.scatter(x,y_shanghai,label="上海",color='r',linestyle='--')#分別為x的顯示範圍為0-3,y的座標0-1
f2=plt.subplot(1,2,2)#將figure分成一行兩列,第三個數位代表的是第二個位置的圖
f2.scatter(x,y_beijing,label="北京")

# #2.1 新增x,y刻度
x_ticks= ["10點{}分".format(i) for i in x] 
y_shanghai_ticks = range(40)

# #2.2 修改x,y刻度
# plt.xticks(x[::5],x_ticks[::5])
# plt.yticks(y_shanghai_ticks[::5])
f1.set_xticks(x[::5])
f1.set_yticks(y_shanghai_ticks[::5])
f1.set_xticklabels(x_ticks[::5])
f2.set_xticks(x[::5])
f2.set_yticks(y_shanghai_ticks[::5])
f2.set_xticklabels(x_ticks[::5])

# #2.3 新增網格顯示
f1.grid(True , linestyle = "--",alpha = 0.6)
f2.grid(True , linestyle = "--",alpha = 0.6)

# #2.4 新增標籤資料
# plt.xlabel("時間",fontsize=20)
# plt.ylabel("溫度",fontsize=20)
# plt.title("某市某日10時至11時的溫度變化折線圖",fontsize=20)
f1.set_xlabel("時間")
f1.set_ylabel("溫度")
f1.set_title("上海市十時至十一時的溫度變化",fontsize=20)
f2.set_xlabel("時間")
f2.set_ylabel("溫度")
f2.set_title("北京市十時至十一時的溫度變化",fontsize=20)
f1.legend(loc=0)
f2.legend(loc=0)

#  影象儲存
plt.savefig("test.png")
#3 影象顯示
plt.show()

影象顯示:

1.5 繪圖應用

import numpy as np
# 繪製一般函數的影象
# 繪製反正切函數影象
# 0 準備資料
x = np.linspace(-10,10,1000)
# x為-10到10等間距取1000份
y = np.arctan(x)

# 1 建立畫布
plt.figure(figsize=(20,8),dpi = 100)

# 2 繪製影象
plt.plot(x,y)

# 2.1新增網格
plt.grid(True,linestyle = "--",alpha=0.6)

# 3 顯示影象
plt.show()

影象顯示:

#繪製正比例函數y = x

影象顯示:

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com