设置坐标轴还记得上次画的“项链”吗?最后说了,这些都是新手村大礼包,还有很多值得挖掘的地方,一起来看看康康意想不到的操作吧(包括但不限于折线图,很多操作等图片也可以被用到!)当我看到这样的图片时,我有点疑惑。好像和手绘图有点不一样。有什么不同?让我们比较一下。Thisisy=x^2drawnbymatplotlib:Thisisy=x^2自己画的:(本灵魂画师在线,非战斗人员请疏散!不要太在意细节,忽略长度不协调x轴和像蚯蚓一样的歪抛物线,手残党说真的尽力了,我明白了!我明白了!)说真的,虽然都是y=x^2的图像,但是你感觉到区别了吗在两个图像之间?这是相当大的。最明显的区别是x轴和y轴的位置。在画抛物线的时候,我们习惯于在y轴的中间,那么在用matplotlib画的时候可以改变坐标轴的位置吗?答案当然是肯定的!ax=plt.gca()#获取坐标轴对象ax.spines['right'].set_color('none')#设置右边框颜色为无色,隐藏右边框ax.spines['top'].set_color('none')#设置上边框颜色为无色,隐藏上边框ax.xaxis.set_ticks_position('bottom')#指定下边框为x轴ax.yaxis.set_ticks_position('left')#SpecifyTheborderontheleftisthey-axisax.spines['bottom'].set_position(('data',0))#由指定数据(即指定的x轴)设置的bottom到y轴的0点ax.spines['left'].set_position(('data',0))#指定数据设置的左边(即指定y轴)绑定到x轴的点0x=np.arange(-1,1,0.01)y=x**2plt.plot(x,y)plt.legend(["y=x^2"],loc=1)plt.savefig("line3.jpg")plt.show()效果图如下:这个是不是很像上面的手绘图?改变坐标轴的步骤在上面代码的注释部分已经写的很清楚了,就不占篇幅重复了。其实就是把不用的边框做成透明的,然后把另外两个边框移动为x轴和y轴,其他的刻度、标签、图标等的设置在介绍的时候已经介绍过了折线图。rc参数设置作为一个英文渣男,能用中文的时候还是希望用中文。然而,在我画画的时候,发生了一点小意外。这里,就是熟悉的下图:plt.figure(figsize=(6,4),dpi=80)plt.plot(x,y)plt.title("linechart")plt.xlabel("x")plt.ylabel("y")plt.xlim(-1,1)plt.ylim(0,1.1)plt.xticks([-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1])plt.yticks([0,0.25,0.5,0.75,1])plt.legend(["y=x^2"],loc=9)plt.savefig("line.png")plt.show()和原图几乎一模一样,只是换了标题。上图标题是“折线图”,我想把它改成“折线图”,结果是这样的。原因是原来的matplotlib不支持中文显示。是的,所以你需要设置rc参数。所谓的rc参数其实就是默认属性要修改。不支持中文,修改成支持中文。这里还有个小坑,就是通过rc参数设置显示中文后,一些负号等特殊符号会显示问题。这里就不再用具体的例子引出这个小坑了,一起来解决,省点篇幅(其实我有点懒233)解决方法又长又简单,两行代码搞定:plt.rcParams['font.sans-serif']=['Simhei']#显示中文plt.rcParams['axes.unicode_minus']=False#显示负号然后运行上面的代码看看效果:中文和负号正常显示!rc参数的设置到这里了吗?其实常用的rc参数设置就是这两行是正确的,但是还有一点需要提醒一下,写下来,需要测试!rc参数修改的是全局默认属性,也就是说一旦设置了这个参数,之后所有的操作都会受到rc参数的影响!这也是为什么经过一次设置,汉字和减号就可以在整个绘图功能中正常显示的原因。rc参数还可以进行线宽、marker大小等各种设置,这些设置几乎每个绘图函数都有相应的参数需要单独设置。限制,所以如果不是必须的话,最好不要使用rc参数进行除显示汉字和符号以外的其他设置。在同一个图表中绘制多条折线其实,折线图的一个很重要的应用就是查看交易随时间变化的趋势。有时我们想查看同一时间段内不同指标的走势。需要在一个图中绘制多条折线,如何实现这个需求?其实原理很简单,就是创建一个canvas后,可以在同一个canvas中重复绘制:plt.figure(figsize=(12,4))plt.plot(df.iloc[:,0].iloc[:15],df.iloc[:,1].iloc[:15],marker="o",label="closingprice")plt.plot(df.iloc[:,0].iloc[:15],df.iloc[:,2].iloc[:15],marker="v",label="highestprice")plt.plot(df.iloc[:,0].iloc[:15],df.iloc[:,3].iloc[:15],marker="v",label="最低价")plt.plot(df.iloc[:,0].iloc[:15],df.iloc[:,4].iloc[:15],marker="o",label="开盘价")plt.legend();效果图:这是一段时间内股价的数据,截取时间为x轴数据,开盘价、最高价、最低价、收盘价是在y轴数据上绘制的折线图。可见这段时间的股价走势比较平稳。温馨提示:可以在同一张画布上重复绘制。仔细观察会发现红线是在其他线层之上的,也就是后画的图会覆盖前画的图。所以在绘制图形的时候要注意,比如饼图,需要同时展示几个饼图,不能使用这种绘制方式,但是多图展示需要创建子图!
