Python Matplotlib绘图实战:从基础图表到高级定制详解
本文系统介绍Python中Matplotlib库的绘图方法,涵盖直方图、条形图、折线图、散点图、饼图及箱形图的实现代码。同时详解23种点形状、8种内置颜色、4种线性样式,以及子图布局、网格生成和图例添加等图像调整技巧,帮助开发者快速掌握数据可视化核心技能。
在开始使用Python进行图表绘制之前,必须预先安装numpy和matplotlib这两个核心库文件。
Numpy是Python生态中用于数值计算的开源扩展库,专门用于存储和处理大型矩阵,其效率优于Python原生数据结构;而matplotlib则是Python的图像绘制框架,利用它生成的图形效果与MATLAB环境下的绘图表现相似。
接下来,将通过一系列简洁的代码示例,演示如何运用Python进行绘图操作。
一、图形绘制

直方图
importmatplotlib.pyplotasplt importnumpyasnp mu=100 sigma=20 x=mu+sigma*np.random.randn(20000)# 样本数量 plt.hist(x,bins=100,color='green',normed=True)# bins显示有几个直方,normed是否对数据进行标准化 plt.show()
条形图
importmatplotlib.pyplotasplt importnumpyasnp y=[20,10,30,25,15] index=np.arange(5) plt.bar(left=index,height=y,color='green',width=0.5) plt.show()
折线图
importmatplotlib.pyplotasplt importnumpyasnp x=np.linspace(-10,10,100) y=x**3 plt.plot(x,y,linestyle='--',color='green',marker='<') plt.show()
散点图
importmatplotlib.pyplotasplt importnumpyasnp x=np.random.randn(1000) y=x+np.random.randn(1000)*0.5 plt.scatter(x,y,s=5,marker='<')# s表示面积,marker表示图形 plt.show()
饼状图
importmatplotlib.pyplotasplt importnumpyasnp labels='A','B','C','D' fracs=[15,30,45,10] plt.axes(aspect=1)#使x y轴比例相同 explode=[0,0.05,0,0]# 突出某一部分区域 plt.pie(x=fracs,labels=labels,autopct='%.0f%%',explode=explode)#autopct显示百分比 plt.show()
箱形图
箱形图主要用于展示数据的分布离散情况。该图形结构包含上边缘、上四分位数、中位数、下四分位数以及下边缘五个关键部分,位于箱体外部的数据点则被识别为异常值。
importmatplotlib.pyplotasplt importnumpyasnp np.random.seed(100) data=np.random.normal(size=(1000,4),loc=0,scale=1) labels=['A','B','C','D'] plt.boxplot(data,labels=labels) plt.show()
二、图像的调整
1、23种点形状
"."point","pixel"o"circle"v"triangle_down "^"triangle_up"<"triangle_left">"triangle_right"1"tri_down "2"tri_up"3"tri_left"4"tri_right"8"octagon "s"square"p"pentagon"*"star"h"hexagon1"H"hexagon2 "+"plus"x"x"D"diamond"d"thin_diamond
2、8种內建默认颜色的缩写
b:blueg:greenr:redc:cyan m:magentay:yellowk:blackw:white
3、4种线性
- 实线 --虚线 -.点划线 :点线
4、一张图上绘制子图

importmatplotlib.pyplotasplt importnumpyasnp x=np.arange(1,100) plt.subplot(221)#2行2列第1个图 plt.plot(x,x) plt.subplot(222) plt.plot(x,-x) plt.subplot(223) plt.plot(x,x*x) plt.subplot(224) plt.plot(x,np.log(x)) plt.show()
5、生成网格

importmatplotlib.pyplotasplt importnumpyasnp y=np.arange(1,5) plt.plot(y,y*2) plt.grid(True,color='g',linestyle='--',linewidth='1') plt.show()
6、生成图例

importmatplotlib.pyplotasplt importnumpyasnp x=np.arange(1,11,1) plt.plot(x,x*2) plt.plot(x,x*3) plt.plot(x,x*4) plt.legend(['Normal','Fast','Faster']) plt.show()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









