學習python視覺化,matplotlib庫學習,基本操作

K_first發表於2020-11-16

一般用到matplotlib庫或者子庫會寫成(as)plt,方便後面使用,也基本是一種共識。

基礎操作

在畫圖前需要先plt.figure()生產一個影像

x = np.linspace(-3,3,50)
y1 = 2*x + 1
y2 = x**2

以上面的資料進行學習

關於影像

`plt.plot(x,y1)  # 可以設定具體引數,color、linestyle、lineswith、lable(這條線的名字)等等
plt.hlines(1,-1,2)  #  一條x∈(-1,2)y=1的直線   豎直線是 vlines(2,-1,3)   y∈(-1,3)x=2的直線



關於座標軸

new_ticks = np.linspace(-1,2,5)   # -1~2中間平均出來5個數
plt.xticks(new_ticks)  # x軸變成 上面那5個數
plt.yticks([-2,-1,-0.5,1,2],[r"$really bad$",r"$bad$",r"$nomal$",r"$good$",r"$very good$"])   
# 上面這條  y軸在對應位置變成後面的標記
plt.xlim(-1,2)  # 現在x軸範圍  y軸  ylim

ax = plt.gca()  # gca 獲取當前座標內容,spines要修改的那條邊,   right\left\top\bottom
ax.spines['right'].set_color("none")
ax.spines['top'].set_color("none")
ax.spines['bottom'].set_position(('data', 0))
ax.spines["left"].set_position(("data",1))

ax.xaxis.set_ticks_position("bottom")   # 將x軸的位置設定在底部
ax.spines["bottom"].set_position(("data",0))   # 底部位置在 “y=0”

plt.xticks(())  # 取消x軸

圖片新增內容

新增圖例 legend

# legend
# 在plot時輸入引數label="sth" 為這個線條新增圖例
# loc="upper right" 表示圖例將新增在圖中的右上角.
#  'best' : 0,
#  'upper right'  : 1,
#  'upper left'   : 2,
#  'lower left'   : 3,
#  'lower right'  : 4,
#  'right'        : 5,
#  'center left'  : 6,
#  'center right' : 7,
#  'lower center' : 8,
#  'upper center' : 9,
#  'center'       : 10,
plt.legend(loc = 5)
plt.legend(loc = “upper right”)

新增內容 text

# x、y分別是在圖中x、y的起點(還可以有z),fontdict設定插入內容格式
plt.text(x, y, r"$this is the txet",
			fontdict{"size" : 16, "color" : "r"}) 

#  %.2f保留兩位小數,橫向居中對齊ha='center',縱向底部(頂部)對齊va='bottom'
# 比如柱狀圖加資料表示
plt.text(x, y+0.3, "%.2f", ha="center", va="bottom")

散點圖 scatter

plt.scatter(x, y)        #  沒什麼說的,和plot類似,可以設定一些引數顏色  大小 之類的 

柱狀圖 bar

plt.bar(x, y) 

Imager影像

import matplotlib.pyplot as plt
import numpy as np

a = np.array([0.1,0.2,0.3,
          0.4,0.5,0.6,
          0.7,0.8,0.9]).reshape(3,3)
# array 陣列  reshape 將上面的列表生成3行3列的陣列

plt.imshow(a, cmap="Blues", interpolation="nearest", origin="upper")
# cmap引數 設定圖片組顏色 Blues挺好看
# interploation 所用的差值方法(高斯、樣條什麼的)沒特殊要求設定nearest
# origin  圖表排列順序,upper(從小到大)和lower

plt.colorbar(shrink=.92)
# 圖片旁邊出現參考資料圖    shrink 調整比例大小

plt.show()

多個表在一個圖

plt.subplot(2,2,1)
a = plt.plot(x, y)
# 將影像分成兩行兩列, a 在第一個位置  

# 每一個新的圖都需要在圖前面宣告位置,plt.subplot(*,*,*) 

# 對於設定不同大小的圖,比如 第一個圖想佔第一行,第二行生產3個小圖  可以通過下面的方法來
plt.subplot(2,1,1)
plt(x1, y1)
plt.subplot(2,2,3)   # 注意這個時候小圖應該是在3這個位置

不同比例圖在一起

畫中畫

原理是向影像增加座標系,使不同座標系做同一個圖中顯示出來 (我理解的以上)

import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()

x = np.arange(1, 3, 0.1)
y = np.sin(x)

left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
# 上面這個就是要加進影像的座標系,其中 left=0.1  表示新增的座標軸在圖形中從左向右1/10的位置  bottom是高度 
width 插入圖形的長度大小  height 插入圖形高度大小   
ax1 = fig.add_axes([left, bottom, width, height])
ax1.plot(x, y, 'r', c="black")
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('title')

# 對於影像的細節操作  在  ax1.plot()中進行 其他和常規圖一樣

left, bottom, width, height = 0.1, 0.8, 0.15, 0.15
ax2 = fig.add_axes([left, bottom, width, height])
y2 = np.cos(x)
ax2.plot(y2)

上面例子

突然不知道了方向,那就在一條路上埋頭走一走再說

2020.11.16

相關文章