matplotlib 強化學習

matplotlib 強化學習

import matplotlib.pyplot as plt
...![](https://img2020.cnblogs.com/blog/1642028/202006/1642028-20200621111043462-144482637.png)


plt.show()		#显示圖像;下面都要寫,就不重複了

二維圖表

1. 基本圖表

  1. 用plot方法畫出x=(0,10)間sin的圖像
x = np.linspace(0, 10, 30)  #產生0-10之間的30個均勻數組
plt.plot(x, np.sin(x));		#以x為橫坐標,sin(x)為縱坐標打印出圖像

注:

  • linspace生成的是包含結尾的數組,比如0-10生成11個數才是0,1,2,3,4,5…
  • 生成10個數則是0,1.11111111, 2.22222222, 3.33333333, 4.44444444…;
  • 而arrange是不包含結尾的,0-10生成10個數是0,1,2,3…
  1. 用點,線的方式畫出x=(0,10)間sin的圖像
plt.plot(x, np.sin(x), '-o');
#'o’代表每個數據點用小圓圈表示,且數據點之前不用線連接,看起來很像散點圖
#'ro'代表小圓圈是紅色的
#'-'就是最普通的線型,數據點之間用實線連接。
#'--'設置線性為虛線

!

  1. 用scatter方法畫出x=(0,10)間sin的點圖像
plt.scatter(x, np.sin(x));		#散點圖

  1. 用餅圖的面積及顏色展示一組4維數據
rng = np.random.RandomState(0)
x = rng.randn(100)			#生成隨機數組
y = rng.randn(100)
colors = rng.rand(100)
sizes = 1000 * rng.rand(100)

plt.scatter(x, y, c=colors, s=sizes, alpha=0.3,
cmap='viridis')
plt.colorbar(); 			# 展示色階

繪製柱狀圖

x = [1,2,3,4,5,6,7,8]
y = [3,1,4,5,8,9,7,2]
label=['A','B','C','D','E','F','G','H']

plt.bar(x,y,tick_label = label);	#縱向升高
plt.barh(x,y,tick_label = label);	#換成橫向

直方圖

data = np.random.randn(1000) #生成1000個隨機數
plt.hist(data);				#畫出圖像

!

2. 自定義圖表元素

x = np.linspace(0,10,100)
plt.plot(x, np.sin(x))
plt.ylim(-1.5, 1.5);		#設置y軸显示範圍為(-1.5,1.5)
x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y, label='sin(x)')
plt.xlabel('variable x');			#設置x,y軸標籤variable x,value y
plt.ylabel('value y');
plt.title('三角函數');					#設置圖表標題“三角函數”
plt.text(3.2, 0, 'sin(x)', weight='bold', color='r');	#註釋

plt.annotate('maximum',xy=(np.pi/2, 1),xytext=(np.pi/2+1, 1),weight='bold',color='r',arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='r'));					#箭頭標識

显示網格

x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.grid()

...
參數
matplotlin.pyplot.grid(b, which, axis, color, linestyle, linewidth, **kwargs) axis : 取值為‘both’, ‘x’,‘y’。就是想繪製哪個方向的網格線。不過我在輸入參數的時候發現如果輸入x或y的時候,             輸入的是哪條軸,則會隱藏哪條軸

color : 這就不用多說了,就是設置網格線的顏色。或者直接用c來代替color也可以。
plt.grid(c='g') 設置顏色為綠色

linestyle :也可以用ls來代替linestyle, 設置網格線的風格,是連續實線,虛線或者其它不同的線條。 | '-' | '--' | '-.' | ':' | 'None' | ' ' | '']
plt.grid(linestyle='-.')

linewidth : 設置網格線的寬度
...

繪製平行於x軸y=0.8的水平參考線

x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.axhline(y=0.8, ls='--', c='r')#水平參考線

3. 自定義圖像

在一張圖裡繪製sin,cos的圖形,並展示圖例

x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()

ax.plot(x, np.sin(x), label='sin')
ax.plot(x, np.cos(x), '--', label='cos')
ax.legend();

多子圖

在2個子圖中,显示sin(x)和cos(x)的圖像

fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.5, 0.8, 0.4], ylim=(-1.2, 1.2))
ax2 = fig.add_axes([0.1, 0.1, 0.8, 0.4], ylim=(-1.2, 1.2))

x = np.linspace(0, 10)
ax1.plot(np.sin(x));
ax2.plot(np.cos(x));

for i in range(1, 7):		#用for創建6個子圖,並且在圖中標識出對應的子圖坐標
plt.subplot(2, 3, i)
plt.text(0.5, 0.5, str((2, 3, i)),fontsize=18, ha='center')

組合繪製大小不同的子圖

grid = plt.GridSpec(2, 3, wspace=0.4, hspace=0.3)
plt.subplot(grid[0, 0])
plt.subplot(grid[0, 1:])
plt.subplot(grid[1, :2])
plt.subplot(grid[1, 2]);

三維圖像

#38.創建一個三維畫布
from mpl_toolkits import mplot3d
fig = plt.figure()
ax = plt.axes(projection='3d')

#39.繪製一個三維螺旋線
ax = plt.axes(projection='3d')
# Data for a three-dimensional line
zline = np.linspace(0, 15, 1000)
xline = np.sin(zline)
yline = np.cos(zline)
ax.plot3D(xline, yline, zline);

#40.繪製一組三維點
ax = plt.axes(projection='3d')
zdata = 15 * np.random.random(100)
xdata = np.sin(zdata) + 0.1 * np.random.randn(100)
ydata = np.cos(zdata) + 0.1 * np.random.randn(100)
ax.scatter3D(xdata, ydata, zdata, c=zdata, cmap='Greens');

import numpy  as np
from matplotlib import pyplot  as plt
from mpl_toolkits.mplot3d import Axes3D
q1 = np.arange(0.01, 1, 0.01)
q2 = np.arange(0.01, 1 , 0.01)  #生成一位基底
q1, q2 = np.meshgrid(q1, q2)    #混合成二維數組,形成二維基底

pCDa = (1-q1)
pCDb = (np.sqrt((1-q1)**2+q1**2)-q1)
s_pCD = -q1* np.log2(q1) - (1-q1) * np.log2(1-q1)
Q_MID1 = s_pCD *q2 /q2        #AB或CD的關聯值,下圖是(s_x_pCD - s_pCD) *q2;  *q2/q2后才是圓柱體

fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(q1,q2,Q_MID1)     #表面圖
ax.set_xlabel('value of q2')
ax.set_ylabel('value of q1')
ax.set_zlabel('the value of Q_MID1(pCD)')
plt.show()

#參數
ax.plot_surface(X, Y, Z, *args, **kwargs)
X,Y,Z:數據
rstride、cstride、rcount、ccount:同Wireframe plots定義
color:表面顏色
cmap:圖層

參考文獻:

  1. https://www.kesci.com/home/project/5de9f0a0953ca8002c95d2a9 50題matplotlib從入門到精通

  2. https://www.cnblogs.com/knightoffz/p/12933716.html 大創項目經歷

  3. https://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html 官方文檔

  4. https://www.cnblogs.com/xingshansi/p/6777945.html 參考博客

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

網頁設計最專業,超強功能平台可客製化