Python中的Matplotlib绘图
Matplotlib是Python的绘图工具,用Matplotlib可以绘制出我们想要的各类2D图。Matplotlib可用于python脚本、jupyter notebook、web等。个人认为在Jupyter Notebook中,Matplotlib表现非常棒哈哈!!
这篇随笔记录下关于最近学习Python数据分析绘图的知识点。(并非全面细致,仅供参考)
1.Matplotlib的基础构成
1.1figure
就像我们生活当中画画一样,画图需要我们提供一个画板,添加各种元素,figure则是充当这么一个角色(对象)。
import matplotlib.pyplot as plt fig = plt.figure()
1.2axes
Matplotlib是一个2D绘图库,我们类似于数学将这个画板分成x和y这两个坐标轴。使用axes设置x和y轴。
1 fig = plt.figure() 2 ax = fig.add_subplot(221) 3 ax.set(xlim=[0,4], ylim=[0, 10], title='An Axes',ylabel='Y', xlabel='X') 4 plt.show()
运行结果如下图所示:
1.3xlim和ylim方法
xlim和ylim方法从字面意思也可以理解,就是给这个图设置了坐标轴范围。
plt.plot(x**3,y) plt.xlim(0,2) plt.ylim(0,7) plt.show()
运行结果如下图:
1.4坐标轴标签
坐标轴标签的方法有xlabel和ylabel,其中的color代表颜色,fontsize代表字体大小,rotation表示旋转角度。
1.5标题
plt.title()方法,方法同坐标轴标签,附加:loc=‘left/right/center’,表示标题位于左右中的哪个位置。
结合坐标轴标签和标题,举一个例子:
import matplotlib.pyplot as plt axes = plt.subplot(111) axes.plot(x,y) axes.set_ylabel('Y',fontsize=20,color='red',rotation=90) axes.set_xlabel('X',fontdict={ 'fontsize':20, 'color':'blue' }) plt.title('X&Y',color='green',fontsize=20) plt.show()
运行结果如下:
基础的画图方法大概就是这些,其实中间还有一些小细节,可以自行去网上或者相关书籍查阅。
2.基本的2D图
2.1散点图
顾名思义,散点图只有点没有线,这里可以借助random和numpy来绘图。
x = np.arange(10) y = np.random.randn(10) plt.scatter(x, y, color='blue', marker='*') plt.show()
运行结果如下图:
2.2柱状图
柱状图有垂直的和水平的这两种。代码图形如下:
np.random.seed(1) x = np.arange(10) y = np.random.randn(10) fig, axes = plt.subplots(ncols=2, figsize=plt.figaspect(1./2)) vert_bars = axes[0].bar(x, y, color='lightblue', align='center') horiz_bars = axes[1].barh(x, y, color='lightblue', align='center') axes[0].axhline(0, color='red', linewidth=2.5) axes[1].axvline(0, color='blue', linewidth=2.5) plt.show()
2.3饼形图
饼形图一般是根据各个label的百分比画饼。各个标签的百分比之和为100%。对于这部分我个人理解的还是少,也只是根据书上和网上大概知道一些成形的代码,如需细究,还请网上查找hh!
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' sizes = [15, 30, 45, 10] explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs') fig1, (ax1, ax2) = plt.subplots(2) ax1.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True) ax1.axis('equal') ax2.pie(sizes, autopct='%1.2f%%', shadow=True, startangle=90, explode=explode, pctdistance=1.12) ax2.axis('equal') ax2.legend(labels=labels, loc='upper right') plt.show()
其实还有一些图表,例如泡泡图,箱型图,轮廓图,包括3D图等等,都可以用Matplotlib绘画出来,这就是鄙人的知识盲区了,若您想了解其他相关知识,烦请参考其他博客,小白的我,实在不会什么,告辞!