
首先,导入工具包并执行魔法指令:
绘制结果:
使用 plt.text 在制定坐标位置添加文本注释,为了方便观察,使用 plt.grid() 添加网格线:
绘制结果:
接下来,我们希望在上图中再绘制一个指向原点的箭头道具,并且箭头道具标注为 坐标原点 。由于需要在图像上显示中文,因此须要先进性下面的全局设置:
使用 plt.annotate 添加文本注释,并使用箭头道具:
xytest 为文本添加的位置, xy 为箭头道具指向的位置, arrowprops 为箭头道具的相关参数。绘制结果:
首先,绘制一条曲线: y=x**2
绘制结果:
隐藏 x 轴和 y 轴:
上述的示例,使用 axes.get_xaxis().set_visible(False) 仅仅是将坐标轴(刻度)进行隐藏,如果想连同直线一起删除该怎么办呢?不着急,我们继续往下看!
绘制结果:
右侧和上侧坐标轴的刻度 Matplotlib 默认已经为我们隐藏了,下面我们将右侧和上侧的实线也进行隐藏:
绘制结果:
最后,关于轴的设置,我们再来学习一项常用技能!设置刻度标签!下面,我们绘制一张柱形图,并设置基本的刻度标签:
绘制结果:
我们发现,上述的刻度标签由于比较长,相邻标签会发生重叠!其实在设置刻度标签时,允许我们传入参数 rotation=45 来讲刻度标签进行一定角度的旋转:
绘制结果:
旋转完成后,默认刻度与刻度标签的中间位置垂直对应~小鱼习惯于讲刻度与刻度标签的右侧进行垂直对齐:
绘制结果:
当我们将多组数据绘制在一张图中时,为各组图形添加图注是非常必要的。添加图注只需要两个 *** 作即可:
绘制结果:
使用 loc='best' 绘制图注,图注位置将自动为我们放置到合理位置,尽量不去遮挡主图。此外,也可以直接将图注设置一定的透明度:
绘制结果:
也可以自定义图注的形状,显示位置:
绘制结果:
今天开始琢磨用Python画图,没使用之前是一脸懵的,我使用的开发环境是Pycharm,这个输出的是一行行命令,这个图画在哪里呢?
搜索之后发现,它会d出一个对话框,然后就开始画了,比如下图
第一个常用的库是Turtle,它是Python语言中一个很流行的绘制图像的函数库,这个词的意思就是乌龟,你可以想象下一个小乌龟在一个x和y轴的平面坐标系里,从原点开始根据指令控制,爬行出来就是绘制的图形了。
它最常用的指令就是旋转和移动,比如画个圆,就是绕着圆心移动;再比如上图这个怎么画呢,其实主要就两个命令:
turtle.forward(200)
turtle.left(170)
第一个命令是移动200个单位并画出来轨迹
第二个命令是画笔顺时针转170度,注意此时并没有移动,只是转角度
然后呢? 循环重复就画出来这个图了
好玩吧。
有需要仔细研究的可以看下这篇文章 https://blog.csdn.net/zengxiantao1994/article/details/76588580 ,这个牛人最后用这个库画个移动的钟表,太赞了。
Turtle虽好玩,但是我想要的是我给定数据,然后让它画图,这里就找到另一个常用的画图的库了。
Matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。其中,matplotlib的pyplot模块一般是最常用的,可以方便用户快速绘制二维图表。
使用起来也挺简单,
首先import matplotlib.pyplot as plt 导入画图的图。
然后给定x和y,用这个命令plt.plot(x, y)就能画图了,接着用plt.show()就可以把图形展示出来。
接着就是各种完善,比如加标题,设定x轴和y轴标签,范围,颜色,网格等等,在 https://blog.csdn.net/guoziqing506/article/details/78975150 这篇文章里介绍的很详细。
现在互联网的好处就是你需要什么内容,基本上都能搜索出来,而且还是免费的。
我为什么要研究这个呢?当然是为了用,比如我把比特币的曲线自己画出来可好?
假设现在有个数据csv文件,一列是日期,另一列是比特币的价格,那用这个命令画下:
这两列数据读到pandas中,日期为df['time']列,比特币价格为df['ini'],那我只要使用如下命令
plt.plot(df['time'], df['ini'])
plt.show()
就能得到如下图:
自己画的是不是很香,哈哈!
然后呢,我在上篇文章 https://www.jianshu.com/p/d4013d8a73de 中介绍过求Ahr999指数,那可不可以也放到这张图中呢?不就是加一条命令嘛
plt.plot(df['time'], df['Ahr999'])
图形如下:
但是,Ahr999指数怎么就一条线不动啊, 原来两个Y轴不一致,显示出来太怪了,需要用多Y轴,问题来了。
继续谷歌一下,把第二个Y轴放右边就行了,不过呢得使用多图,重新绘制
fig = plt.figure() # 多图
ax1 = fig.add_subplot(111)
ax1.plot(df['time'], df['ini'], label="BTC price") # 绘制第一个图比特币价格
ax1.set_ylabel('BTC price') # 加上标签
# 第二个直接对称就行了
ax2 = ax1.twinx()# 在右边增加一个Y轴
ax2.plot(df['time'], df['Ahr999'], 'r', label="ahr999") # 绘制第二个图Ahr999指数,红色
ax2.set_ylim([0, 50])# 设定第二个Y轴范围
ax2.set_ylabel('ahr999')
plt.grid(color="k", linestyle=":")# 网格
fig.legend(loc="center")#图例
plt.show()
跑起来看看效果,虽然丑了点,但终于跑通了。
这样就可以把所有指数都绘制到一张图中,等等,三个甚至多个Y轴怎么加?这又是一个问题,留给爱思考爱学习的你。
有了自己的数据,建立自己的各个指数,然后再放到图形界面中,同时针对异常情况再自动进行提醒,比如要抄底了,要卖出了,用程序做出自己的晴雨表。
print 函数是输出字符串,所以用 print 输出形成的 grid 其实质是具有某特定形状的 字符串 ,而 plt.grid() 绘制出的网格是 图片。
字符串 是可以用文字处理软件(如 word、记事本等)直接编辑处理的,而 图片 则只能用图片编辑软件(如画笔)打开处理。
如问题所要求的最简单的“编写一个能画出如下网格(grid)的函数”代码,可以简单的用 print 函数就可以了:
代码执行效果:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)