1我畫出來的圖:
2 運(yùn)行代碼在此:
3 簡略講解版本:
#導(dǎo)入庫
import matplotlib.pyplot as plt
import numpy as np
#設(shè)置各部分?jǐn)?shù)據(jù)
x = np.linspace(0,10,100)
y = np.cos(x)
z = np.sin(x)
data = 2 * np.random.random((10,10))
data2 = 3 * np.random.random((10,10))
Y,X = np.mgrid[-3:3:100j,-3:3:100j]
U = -1 -X**2+ Y
V = 1 + X - Y**2
#建立畫布(figure)和建立圖
fig = plt.figure()
fig.add_axes()
ax1 = fig.add_subplot(221)
ax3 = fig.add_subplot(212)
#詳細(xì)設(shè)置圖
ax1.hist(y)
ax3.boxplot(y)
ax3.violinplot(z)
#顯示
plt.show()
#關(guān)閉
plt.cla()
plt.clf()
plt.close()
4 詳細(xì)注釋版本:
#導(dǎo)入numpy庫用來科學(xué)計(jì)算荧呐,matplotlib庫畫圖
import matplotlib.pyplot as plt
import numpy as np
'''調(diào)用了numpy的linspace()建立了了一個(gè)數(shù)組,
其參數(shù)的含義分別是開始值棚放,終止值焕数,創(chuàng)建元素個(gè)數(shù)呛凶,
往往最后可能會有一個(gè)endpoint=False,表示最后一個(gè)值是否被包含葱弟,不寫默認(rèn)為True.
類似于:np.linspace(0,10,100,endpoint=False)的格式'''
x = np.linspace(0,10,100)
#并把這100個(gè)值賦予X捣染。y,z分別是cosine和sine值(x,y,z都是numpy數(shù)組)
#此處可參考http://www.reibang.com/p/7fbecf5255f0
y = np.cos(x)
z = np.sin(x)
'''np.random.random()返回隨機(jī)的浮點(diǎn)數(shù)继控,在半開區(qū)間 [0.0, 1.0),
data指畫出一個(gè)10*10形狀的二維數(shù)組,由范圍 [0.0, 1.0)的隨機(jī)數(shù)組成,
并且每個(gè)隨機(jī)數(shù)都要*2 data2則表示*3'''
data = 2 * np.random.random((10,10))
data2 = 3 * np.random.random((10,10))
'''np.mgrid()用于返回多維結(jié)構(gòu)嫉柴,np.mgrid[ 第1維厌杜,第2維 ,第3維 计螺, …]?
一維:eg:np.mgrid[-1:1:5j]
array([-1. , -0.5, ?0. , ?0.5, ?1. ])?
第一個(gè)參數(shù)是初始值夯尽,第二個(gè)為終止值,第三個(gè)為參數(shù)個(gè)數(shù)登馒,猜測j代表橫坐標(biāo)或者縱坐標(biāo)匙握?
不理解二維多維數(shù)組,直到我找到了這篇文章:
http://www.cnblogs.com/NanShan2016/p/5491200.html陈轿,
?舉例:
如:k,b=np.mgrid[1:3:3j,4:6:3j]
?可以這么理解:
k軸范圍為1~3圈纺,b軸范圍為4~6:
k與b為咱們相關(guān)的x,y軸
【step1:k擴(kuò)展】(朝右擴(kuò)展):
[1 1 1]
[2 2 2]
[3 3 3]
【step2:b擴(kuò)展】(朝下擴(kuò)展):
[4 5 6]
[4 5 6]
[4 5 6]
【tep3:定位(ki麦射,bi)】(把上面的k蛾娶、b聯(lián)合起來):
[(1,4) (1,5) (1,6)]
[(2,4) (2,5) (2,6)]
[(3,4) (3,5) (3,6)]
啊 這不就是咱么理解的橫縱坐標(biāo)嗎?'''
Y,X = np.mgrid[-3:3:100j,-3:3:100j]
#此處是對X,Y坐標(biāo)進(jìn)行運(yùn)算
U = -1 -X**2+ Y
V = 1 + X - Y**2
# figure()返回一個(gè)Figure對象(類似創(chuàng)建一個(gè)畫布)
fig = plt.figure()
#添加一個(gè)坐標(biāo)軸
fig.add_axes()
'''add_subplot是返回一個(gè)Axes對象潜秋,就是設(shè)置一個(gè)坐標(biāo)軸
221指將畫布分割成2行2列蛔琅,這個(gè)坐標(biāo)軸圖像畫在從左到右從上到下的第1塊
212畫布為在兩行的第二行'''
ax1 = fig.add_subplot(221)
ax3 = fig.add_subplot(212)
#hist()繪制直方圖
ax1.hist(y)
#boxplot()繪制盒狀圖
ax3.boxplot(y)
#violinplot()繪制小提琴圖
ax3.violinplot(z)
#spines 是連接軸刻度標(biāo)記的線,而且標(biāo)明了數(shù)據(jù)區(qū)域的邊界
ax1.spines['top'].set_visible(False)
ax1.spines['bottom'].set_position(('outward',10))
#顯示
plt.show()
#清除當(dāng)前axes
plt.cla()
#清除當(dāng)前figure
plt.clf()
#關(guān)閉figure 窗口峻呛。
plt.close()
我的代碼是從下面的網(wǎng)址中抄下來運(yùn)行的揍愁,當(dāng)時(shí)不知道干嘛的,只是為了熟悉Matplotlib杀饵。我只能保證注釋大體正確吧,有問題可以指出啊 谬擦,我就是想要大家告訴我答案呀! 加油呀↖(^ω^)↗ 米娜桑