1. 程式人生 > >設定plot的風格和樣式(二)

設定plot的風格和樣式(二)

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()