設定plot的風格和樣式(二)
阿新 • • 發佈:2019-02-15
import matplotlib.pyplot as plt
import numpy as np
'''plot語句中支援除X,Y以外的引數,以字串形式存在,來控制顏色、線性、點型等要素,語法形式如下:
plt.plot(X,Y,"format",...)'''
'''點和線的樣式。'''
'''顏色:引數color或c 顏色值的方式:(1)別名color="r";(2)合法的HTML顏色名color="red";(3)HTML十六進位制字串color="#eeefff";(4)歸一化到[0,1]的RGB元組color=(0.3, 0.3, 0.4)'''
x = np.arange(0 , 10, 0.1)
# plt.plot(x, np.sin(x), color="red") # 合法的HTML顏色名color="red"
# plt.plot(x, np.sin(x), "#ff0000") # 只能使用六位數進行表示,紅綠藍
plt.plot(x, np.sin(x), color=(0.5, 0.8, 0.4)) # 紅綠藍 歸一化到[0,1]的RGB元組
plt.show()
pic_data = plt.imread("pic.jpg") # jpg和png的區別:格式不同,導致存資料的時候,png格式的圖片是歸一化的紅綠藍資料
# 透明度 alpha引數
x = np.arange(0, 10, 0.1)
plt.plot(x, np.sin(x), color="red", alpha=0.5)
plt.show()
# 背景色 設定背景色,通過plt.subplot()方法傳入facecolor引數,來設定座標軸的背景色
x = np.arange(0, 10, 0.1)
axes = plt.subplot(facecolor="gray", alpha=0.5) # 面向物件的畫圖方法 axes畫板
axes.plot(x, np.sin(x), "w")
plt.show()
'''線性 引數linestyle或ls
線條風格和描述:'-'=實線, '...'=破折線, '-.'=點化線, ':'=虛線, 'steps'=階梯線, 'None'/','=什麼都不畫'''
x = np.arange(-np.pi, np.pi, 0.1)
plt.plot(x, np.sin(x), ls=":") # ls設定線條風格
plt.show()
# 線寬 linewidth或lw引數
x = np.arange(-np.pi, np.pi, 0.1)
plt.plot(x, np.sin(x), ls=":", lw=2.5)
plt.show()
# 不同寬度的破折線 dashes引數 設定破折號序列各段的寬度
x = np.arange(-np.pi, np.pi, 0.1)
plt.plot(x, np.sin(x), ls=":", lw=2.5, dashes=[2, 5, 5, 2]) # 2代表長度, 5代表間隔
plt.show()
'''點型 marker引數 標記和描述:'1'=一角朝下的三腳架, '2'=一角朝上的三腳架, '3'一角朝左的三腳架, '4'=一角朝右的三腳架, 's'=正方形, 'h'=六邊形1, '8'=八邊形, 'p'=五邊形, 'H'=六邊形2, '.'=點, '*'=星號, 'x'=X, '+'=加號, ','=畫素, 'o'=圓圈, 'd'=小菱形, 'D'=菱形, '_'=水平線, '|'=水平線, '>'=一角朝右的三角形, '<'=一角朝左的三角形, 'v'=一角朝下的三角形, '^'=一角朝上的三角形'''
plt.figure(figsize=(12, 9))
x = np.arange(-np.pi, np.pi, 0.1)
plt.plot(x, np.sin(x), ls="--", lw=2.5, marker='2', markersize=10)
plt.show()
# 多引數連用 顏色、點型、線型
plt.figure(figsize=(12, 9))
x = np.arange(-np.pi, np.pi, 0.1)
plt.plot(x, np.sin(x), "r--o")
plt.show()
# 更多點和線的設定 markeredgewidth=點邊緣的寬度
# markeredgecolor=點邊緣的顏色, markerfacecolor=點內部的顏色, markersize=點的大小
x = np.arange(0, 10, 1)
plt.plot(x, "r--", marker="o", markersize=10, markeredgecolor="green",
markeredgewidth=2, markerfacecolor="purple")
plt.show()
# 在一條語句中為多個曲線進行設定
# 多個曲線同一設定,屬性名宣告 plt.plot(x1,y1,x2,y2,fmt,...)
x = np.arange(0, 10, 0.01)
# 設定屬性時如果不宣告屬性的名稱,則這個屬性會直接被設定給距離它最近的那條線
plt.plot(x, 2*x, x, np.sin(x)*5, ls="--", lw=3, color="red")
plt.show()
# 多個曲線不同設定
# 多個都進行設定時,無需宣告屬性plt.plot(x1,y1,fmt1,x2,y2,fmt2,...)
x = np.arange(0, 10, 1)
plt.plot(x, 2*x, "r--", x, np.cos(x)*5, "g-.", marker="o")
plt.show()
# 三種設定
# 2)對例項使用一系列的setter方法
x = np.arange(0, 10, 0.1)
l1, = plt.plot(x, np.sin(x))
l2, = plt.plot(x, np.cos(x))
l3, = plt.plot(x, 2*x)
l1.set_color("r")
l2.set_color("blue")
l3.set_linewidth(5)
l3.set_linestyle('--')
plt.show()
# 3)使用setp方法
line, = plt.plot(x, np.sin(x))
plt.setp(line, linestyle='--', linewidth=1.5, marker="o") # setp():p:property(屬性)
plt.show()
'''X、Y軸座標刻度'''
# xticks()和ysticks()方法
x = np.random.randn(100) # 總共有100個數據
plt.plot(x.cumsum())
plt.xticks(np.linspace(0, 100, 5), list("ABCDE"), fontsize=12, rotation=0) # 5表示分成5份
plt.yticks(np.linspace(-10, 20, 3), ["min", 0, "max"], fontsize=12) # 3表示分成3份
plt.show()
# 面向物件的方法 set_xticks、set_yticks、set_xticklabels、set_yticklabels方法
axes = plt.subplot(111)
axes.plot(x.cumsum())
axes.set_xticks([0, 25, 50, 75, 100]) # set_xticks設定刻度值
axes.set_xticklabels(list("abcde")) # set_xticklabels設定標籤
axes.set_yticks([-10, -6, -2, 2, 6])
plt.show()
# 正弦餘弦 LaTex語法,用π等表示式在圖表上寫上希臘字母
x = np.arange(-np.pi, np.pi, 0.01)
plt.plot(x, np.sin(x), x, np.cos(x))
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
["-$\pi$", "-$\pi/2$", 0, "$\pi/2$", "$\pi$"])
plt.yticks([-1, 0, 1], ["min", 0, "max"])
plt.show()