matplotlib 必知的 15 個圖

三步加星標
#?導入numpy模塊
import?numpy?as?np
#?導入pyplot模塊
import?matplotlib.pyplot?as?plt
案例1基本折線圖
#?創(chuàng)建序列[1,2,3,...,99]
X?=?range(100)
#?X中元素依次取平方
Y?=?[value?**?2?for?value?in?X]
plt.plot(X,?Y)
plt.show()

案例2正弦圖
#?[0,2PI)分割為100份
X?=?np.linspace(0,?2?*?np.pi,?100)
#?計算正弦值
Y?=?np.sin(X)
plt.plot(X,?Y)
plt.show()

案例3正弦和余弦圖
X?=?np.linspace(0,?2?*?np.pi,?100)
Ya?=?np.sin(X)
#?計算余弦值
Yb?=?np.cos(X)
plt.plot(X,?Ya)
plt.plot(X,?Yb)
plt.show()

案例4 曲線
def?plot_slope(X,?Y):
????#?計算x方向相鄰元素的delta
????Xs?=?X[1:]?-?X[:-1]
????#?y方向delta
????Ys?=?Y[1:]?-?Y[:-1]
????plt.plot(X[1:],?Ys?/?Xs)
X?=?np.linspace(-3,?3,?100)
Y?=?np.exp(-X?**?2)
plt.plot(X,?Y)
plot_slope(X,?Y)
plt.show()

| 0 | 0 |
| 1 | 1 |
| 2 | 4 |
| 4 | 16 |
| 5 | 25 |
| 6 | 36 |
X,?Y?=?[],?[]
#?按行讀入txt文件
for?line?in?open('my_data.txt',?'r'):
????#?得到一對(x,y)坐標
????values?=?[float(s)?for?s?in?line.split()]
????X.append(values[0])
????Y.append(values[1])
plt.plot(X,?Y)
plt.show()

案例6散點圖
1024個隨機點的散點圖
#?隨機生成1024行2列的數據,就是1024個點(x,y)
data?=?np.random.rand(1024,?2)
#?繪制散點圖
plt.scatter(data[:,?0],?data[:,?1])
plt.show()

案例7 柱狀圖
data?=?[5.,?25.,?50.,?20.]
plt.bar(range(len(data)),?data,?width=0.5)
plt.show()

案例8 水平柱狀圖
data?=?[5.,?25.,?50.,?20.]
plt.barh(range(len(data)),?data)
plt.show()

案例9 系列柱狀圖
import?numpy?as?np
import?matplotlib.pyplot?as?plt
data?=?[[5.,?25.,?50.,?20.],
[4.,?23.,?51.,?17.],
[6.,?22.,?52.,?19.]]
X?=?np.arange(4)
plt.bar(X?+?0.00,?data[0],?color='b',?width=0.25)
plt.bar(X?+?0.25,?data[1],?color='g',?width=0.25)
plt.bar(X?+?0.50,?data[2],?color='r',?width=0.25)
plt.show()

案例10 stacked 柱狀圖
A?=?[5.,?30.,?45.,?22.]
B?=?[5.,?25.,?50.,?20.]
X?=?range(4)
plt.bar(X,?A,?color='b')
plt.bar(X,?B,?color='r',?bottom=A)
plt.show()

案例11 背靠背水平柱狀圖
women_pop?=?np.array([5.,?30.,?45.,?22.])
men_pop?=?np.array([5.,?25.,?50.,?20.])
X?=?np.arange(4)
plt.barh(X,?women_pop,?color?=?'r')
plt.barh(X,?-men_pop,?color?=?'b')
plt.show()
X?=?np.arange(4)
plt.barh(X,?women_pop,?color='r')
plt.barh(X,?-men_pop,?color='b')
plt.show()

案例12 餅狀圖
data?=?[5,?25,?50,?20]
plt.pie(data)
plt.show()
案例13 直方圖
X?=?np.random.randn(1000)
plt.hist(X,?bins=20)
plt.show()

以上直方圖描述了20個區(qū)間內,點數的頻次。
案例14 箱形圖
data?=?np.random.randn(100,?5)
plt.boxplot(data)
plt.show()

案例15 triangulation 圖
import?matplotlib.tri?as?tri
data?=?np.random.rand(100,?2)
triangles?=?tri.Triangulation(data[:,?0],?data[:,?1])
plt.triplot(triangles)
plt.show()

評論
圖片
表情
