前情回顧
簡(jiǎn)介
Matplotlib是一個(gè)Python的繪圖庫(kù)羔味,可以繪制出常用圖表卡儒,如散點(diǎn)圖、柱狀圖等祠够,下面做簡(jiǎn)要介紹。
一個(gè)簡(jiǎn)單的demo
首先從一個(gè)demo看起椭更,繪制三角函數(shù)并填充一定區(qū)域哪审,每一步有注釋說(shuō)明蛾魄,整體用法與MATLAB接近虑瀑。
# encoding=utf-8
import numpy
import matplotlib.pyplot as plot
def main():
# 生成數(shù)組作為橫坐標(biāo)
x = numpy.linspace(-numpy.pi, numpy.pi, 256, endpoint=True)
cos = numpy.cos(x)
sin = numpy.sin(x)
plot.figure(1)
# 繪制cos函數(shù)
plot.plot(x, cos, color="blue", linewidth=1.0, linestyle='-', label='cos')
# 繪制sin函數(shù)
plot.plot(x, sin, 'r*', label='sin')
# 設(shè)置標(biāo)題
plot.title('function')
#------繪制坐標(biāo)------
ax = plot.gca()
# 設(shè)置坐標(biāo)四周的樣式
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data', 0))
# 設(shè)置坐標(biāo)值顯示的位置
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# 設(shè)置坐標(biāo)顯示內(nèi)容
plot.xticks([-numpy.pi, -numpy.pi/2, 0, numpy.pi/2, numpy.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plot.yticks(numpy.linspace(-1, 1, 5, endpoint=True))
# 設(shè)置每個(gè)坐標(biāo)的樣式
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_fontsize(8)
label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.5))
# 設(shè)置圖例所在位置
plot.legend(loc='upper left')
# 設(shè)置網(wǎng)格
plot.grid()
# 繪制填充區(qū)域
plot.fill_between(x, numpy.abs(x) < 0.5, cos, cos > 0.5, color='blue', alpha=0.2)
t = 1
# 繪制直線
plot.plot([t, t], [0, numpy.cos(t)], 'y', linewidth=3, linestyle='--')
# 繪制注解
plot.annotate('cos(1)', xy=(t, numpy.cos(1)), xycoords='data', xytext=(10, 30), textcoords='offset points',arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=0.2'))
plot.show()
if __name__ == '__main__':
main()
主要解釋一下fill_between()這個(gè)方法,這個(gè)方法完整定義為
fill_between(x, y1, y2=0, where=None, interpolate=False, hold=None, **kwargs)
- x-橫坐標(biāo)
- y1-橫坐標(biāo)為x時(shí)填充縱坐標(biāo)的起點(diǎn)
- y2-橫坐標(biāo)為x時(shí)填充縱坐標(biāo)的終點(diǎn)
- where-縱坐標(biāo)生效的填充范圍
畫(huà)出的圖如下
1.png
類(lèi)型
matplotlib支持的繪圖類(lèi)型主要有以下幾種
類(lèi)型 | 說(shuō)明 |
---|---|
scatter | 散點(diǎn)圖 |
bar | 柱狀圖 |
pie | 餅狀圖 |
polar | 極坐標(biāo) |
imshow | 熱力圖 |
下面是每種圖的示例滴须。
散點(diǎn)圖
2.png
def scatter():
x = numpy.random.normal(0, 1, 100)
y = numpy.random.normal(0, 1, 100)
plot.scatter(x, y)
plot.show()
柱狀圖
3.png
def bar():
x = numpy.random.normal(0, 1, 100)
y = numpy.random.normal(0, 1, 100)
plot.bar(x, y, 0.2, edgecolor='white')
plot.show()
餅圖
4.png
def pie():
x = numpy.random.normal(0, 1, 5)
y = numpy.random.normal(0, 1, 5)
plot.pie(x)
plot.show()
極坐標(biāo)
5.png
def polar():
theta = numpy.arange(0, 2 * numpy.pi, 2 * numpy.pi / 20)
r = 10 * numpy.random.rand(20)
plot.polar(theta, r)
plot.show()
熱力圖
def heatmap():
data = numpy.random.rand(3, 3)
cmap = cm.Blues
plot.imshow(data, interpolation='nearest', cmap=cmap, aspect='auto')
plot.show()
小結(jié)
matplotlib的繪圖功能十分強(qiáng)大和靈活舌狗,上面僅僅是很小的一部分,利用這個(gè)庫(kù)在數(shù)據(jù)分析說(shuō)結(jié)果之后就可以直接繪制出想要的圖扔水,不需要再用其它工具繪制痛侍,十分方便。