当前位置: 首页 > 后端技术 > Python

认识matplotlib:不常见的一面,折线图!

时间:2023-03-25 22:09:40 Python

江湖界公认的一句话,字不如表,表不如图!人们往往更喜欢看图说话,所以用python的大侠们,你们是用什么画图的?各种图纸包就像各种武器。有的武器功能单一,但在细分领域超级专业无敌,有的武器功能多样,使用灵活。众所周知,matplotlib是python绘图的基础包。它可以生成各种2D或3D图形。?丑陋的拒绝?不不不,别激动!其实,matplotlib一直是低调、奢华、有内涵的包装。我们需要通过其朴实无华的外观来认识其丰富多彩的内饰。来到康康,这迷人的曲线,你感受到它的召唤了吗?心里会不会有一丝学习的冲动?啊?太妖娆?还有文艺的,比如这张动感的雨滴图:你会不会想起咖啡馆外几片梧桐树落叶的街道,玻璃窗上弥漫着雾气,浅浅的水坑里滴落的雨滴激起中间的水花飞溅电影的那种,只需要一把伞,两个人就可以想象一场戏。....咳咳。..联想能力有点强,差点hold不住。总之,无论你有什么样的想法,matplotlib大概率都能找到实现的方法,3D图像不是问题。比如官网首页的四张图,最后一张是3D的!嗯~?太小?看不清楚?这个没什么好担心的,来一张3D清晰大图!个人觉得这个帽子状的3D地图无论是配色还是造型都非常漂亮。这个“帽子”是官网给的样例图,不过我去掉了背景上的网格线和刻度,看起来很有质感。所以不管是2D还是3D,静态还是动态,matplotlib都能搞定一切。既然matplotlib这么强大,那么新的问题又来了,会不会很难学?答案很简单粗暴,也很强大,那就是:不会!用matplotlib实现绘图并不难。当然,要实现上面的动态和3D图像会有些难度,但这只是与简单的绘图相比。绘图的逻辑没有太大区别。通过简单的图形学习使用matplotlib绘图的逻辑和基础知识,然后将这些逻辑和知识细节应用到复杂的图形上,一步一步,水到渠成!只说不做假,有句话叫名为“Talkischeap!Showmethecode!”那么我们将从一个简单基础的折线图开始,揭开matplotlib的层层叠叠,愉快地探索它的各种应用。画折线图虽然说是画折线图,但是有些步骤是画图的共同点,比如...画图处理数字,所以在导入绘图包matplotlib之前,会先导入numpy包,而pandas也是一个数据处理包,而在实际工作中,用于画图的源数据往往是表格数据,所以pandas包可以处理表格数据的也必须将它们一起导入。另外,matplotlib包含两个模块,pyplot和pylab。我们这里只导入pyplot模块。对于初学者来说,可能不明白这两个模块是干什么的。为什么只导入pyplot?Matplotlib是整个包;pyplot和pylab是matplotlib中的模块;pylab是一个方便的模块,可在单个命名空间中批量导入matplotlib.pyplot(用于绘图)和numpy(用于数学和使用数组)。虽然很多例子使用了pylab,但是不再推荐使用。对于非交互式绘图,建议使用pyplot创建图形,然后使用OO接口进行绘图。(以上是官网给出的关于matplotlib和两个模块的关系的解释)明白为什么只导入matplotlib.pyplot了吗?来画一个简单的折线图吧!第一步解决数据源首先是问题,就是我们要将什么数据转换成图形,这里我们使用前面导入的numpy包来生成一些数据用于绘图。生成了200个取值范围为-1到1的浮点数,用函数建立了x和y的关系。接下来,我们将画出这组关系。对于这个简单的绘图,可以省略很多步骤,直接调用绘制折线图的函数plt.plot(),一步画出图形:plt.plot(x,y)plt.show()这里,这是上面几行代码画出来的折线图,反应的函数关系是y=x^2,是不是超级简单呢?觉得太简陋?嗯~~就算是函数的手绘图,也要有图形标题,坐标轴标签,图例等等,好吧!那么我们来改进一下这个简单的折线图,让它更完整、更漂亮。而且这个过程也适用于折线图以外的其他类型的图,其他的图也可以参考这套思路进行改进。plt.figure(figsize=(width,height),dpi=pixel)#创建画布plt.figure(figsize=(6,4),dpi=80)#创建画布并设置画布的大小和分辨率plt.plot(x,y)#绘制折线图plt.title("line")#设置图形标题plt.xlabel("x")#设置x轴标题plt.ylabel("y")#设置y-axistitleplt.xlim(-1,1)#设置x轴的取值范围plt.ylim(0,1.1)#设置y轴的取值范围plt.xticks([-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1])#设置x轴刻度plt.yticks([0,0.25,0.5,0.75,1])#设置y-axisscaleplt.legend(["y=x^2"],loc=9)#显示图例图例的位置,将图例名称写入[''],loc参数指定图例在图例中的位置figureplt.savefig("line.png")#保存绘制的图片plt.show()#本地显示图形,这行代码可以使用分号;替换得到的图:通常可以设置的标题、标签、图例等在代码中都以注释的形式写的很清楚,不再占用空间重复。那么对于折线图,是否只有这些可以设置?当然不是,比如折线的线型,线的颜色,线上点的样式、大小、颜色等等,可以设置的内容超乎想象。不过这么多设置在实际工作中并没有用到。感兴趣的朋友,在运行plt.plot()函数之前,使用shift+tab快捷键调出该函数的帮助文档,探索更多应用。这是我的小探索:x=np.arange(-1,1.1,0.1)#generatedatay=x**2plt.plot(x#x轴数据,y#y轴数据,alpha=0.5#lineTransparency,0到1之间的浮点数,值越小透明度越高,linestyle="--"#设置线条样式,"--"表示虚线,linewidth=2.5#设置线宽,输入一个浮点数,color="b"#设置线条的颜色,"b"表示蓝色,marker="o"#设置数据点的形状,"o"表示原型,markeredgecolor="g"#设置数据点边框的颜色,"g"表示绿色,markeredgewidth=1.2#设置数据点边框的宽度,输入一个浮点数,markerfacecolor="w"#设置数据点的颜色,"w"表示白色,markersize=5.5#设置数据点形状的大小,输入浮点数)plt.xticks([])#去除x轴刻度,x轴不显示刻度在生成的图中plt.yticks([])#去除y轴刻度,生成图中y轴不显示刻度plt.show()#本地显示图形绘制的图像如下:呃~~~有点难看,不用在意这些细节,毕竟在配色、线条、标记等方面鼓捣了好久,才鼓捣出一款看起来不太辣眼、能显示常用参数的。对于图片,我大概是五要素中缺少美国商人。....其实我觉得这张图有点像项链(捂脸)。那么,这就是折线图可以设置的吗?能画出来的图是上图吗?当然不是!前面那条妖娆的曲线,本质上就是一个折线图,图形可以设置的不止这些。展示出来的,大概也算是新手村比较丰厚的大礼包了。至于做哪些设置可以达到什么目的?至于效果,悬而未决,保密,下次再说!嘿嘿!