python函数绘图教学 python 函数绘图

用Python画图今天开始琢磨用Python画图,没使用之前是一脸懵的,我使用的开发环境是Pycharm,这个输出的是一行行命令,这个图画在哪里呢?
搜索之后发现,它会弹出一个对话框 , 然后就开始画了,比如下图
第一个常用的库是Turtle , 它是Python语言中一个很流行的绘制图像的函数库 , 这个词的意思就是乌龟,你可以想象下一个小乌龟在一个x和y轴的平面坐标系里,从原点开始根据指令控制 , 爬行出来就是绘制的图形了 。
它最常用的指令就是旋转和移动,比如画个圆 , 就是绕着圆心移动;再比如上图这个怎么画呢,其实主要就两个命令:
turtle.forward(200)
turtle.left(170)
第一个命令是移动200个单位并画出来轨迹
第二个命令是画笔顺时针转170度,注意此时并没有移动 , 只是转角度
然后呢? 循环重复就画出来这个图了
好玩吧 。
有需要仔细研究的可以看下这篇文章,这个牛人最后用这个库画个移动的钟表,太赞了 。
Turtle虽好玩,但是我想要的是我给定数据 , 然后让它画图,这里就找到另一个常用的画图的库了 。
Matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图 。其中,matplotlib的pyplot模块一般是最常用的,可以方便用户快速绘制二维图表 。
使用起来也挺简单,
首先import matplotlib.pyplot as plt 导入画图的图 。
然后给定x和y,用这个命令plt.plot(x, y)就能画图了 , 接着用plt.show()就可以把图形展示出来 。
接着就是各种完善,比如加标题 , 设定x轴和y轴标签,范围,颜色 , 网格等等 , 在这篇文章里介绍的很详细 。
现在互联网的好处就是你需要什么内容,基本上都能搜索出来,而且还是免费的 。
我为什么要研究这个呢?当然是为了用,比如我把比特币的曲线自己画出来可好?
假设现在有个数据csv文件,一列是日期,另一列是比特币的价格 , 那用这个命令画下:
这两列数据读到pandas中,日期为df['time']列,比特币价格为df['ini'],那我只要使用如下命令
plt.plot(df['time'], df['ini'])
plt.show()
就能得到如下图:
自己画的是不是很香,哈哈!
然后呢,我在上篇文章中介绍过求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()
【python函数绘图教学 python 函数绘图】 跑起来看看效果,虽然丑了点,但终于跑通了 。
这样就可以把所有指数都绘制到一张图中,等等,三个甚至多个Y轴怎么加?这又是一个问题,留给爱思考爱学习的你 。
有了自己的数据,建立自己的各个指数,然后再放到图形界面中,同时针对异常情况再自动进行提醒 , 比如要抄底了 , 要卖出了 , 用程序做出自己的晴雨表 。
python绘图篇1 , xlable,ylable设置x , y轴的标题文字 。
2,title设置标题 。
3,xlim,ylim设置x,y轴显示范围 。
plt.show()显示绘图窗口,通常情况下,show()会阻碍程序运行,带-wthread等参数的环境下 , 窗口不会关闭 。
plt.saveFig()保存图像 。
面向对象绘图
1 , 当前图表和子图可以用gcf(),gca()获得 。
subplot()绘制包含多个图表的子图 。
configure subplots,可调节子图与图表边框距离 。
可以通过修改配置文件更改对象属性 。
图标显示中文
1 , 在程序中直接指定字体 。
2, 在程序开始修改配置字典reParams.
3,修改配置文件 。
Artist对象
1,图标的绘制领域 。
2,如何在FigureCanvas对象上绘图 。
3,如何使用Renderer在FigureCanvas对象上绘图 。
FigureCanvas和Render处理底层图像操作,Artist处理高层结构 。
分为简单对象和容器对象 , 简单的Aritist是标准的绘图元件,例如Line 2D,Rectangle,Text,AxesImage等,而容器类型包含许多简单的的 Aritist对象 , 使他们构成一个整体 , 例如Axis,Axes,Figure等 。
直接创建Artist对象进项绘图操作步奏:
1,创建Figure对象(通过figure()函数,会进行许多初始化操作,不建议直接创建 。)
2,为Figure对象创建一个或多个Axes对象 。
3,调用Axes对象的方法创建各类简单的Artist对象 。
Figure容器
如何找到指定的Artist对象 。
1,可调用add_subplot()和add_axes()方法向图表添加子图 。
2 , 可使用for循环添加栅格 。
3,可通过transform修改坐标原点 。
Axes容器
1,patch修改背景 。
2,包含坐标轴,坐标网格,刻度标签,坐标轴标题等内容 。
3,get_ticklabels(),,get-ticklines获得刻度标签和刻度线 。
1 , 可对曲线进行插值 。
2,fill_between()绘制交点 。
3,坐标变换 。
4,绘制阴影 。
5,添加注释 。
1,绘制直方图的函数是
2,箱线图(Boxplot)也称箱须图(Box-whisker Plot),是利用数据中的五个统计量:最小值、第一四分位
数、中位数、第三四分位数与最大值来描述数据的一种方法,它可以粗略地看出数据是否具有对称性以及分
布的分散程度等信息,特别可以用于对几个样本的比较 。
3,饼图就是把一个圆盘按所需表达变量的观察数划分为若干份 , 每一份的角度(即面积)等价于每个观察
值的大小 。
4,散点图
5,QQ图
低层绘图函数
类似于barplot(),dotchart()和plot()这样的函数采用低层的绘图函数来画线和点,来表达它们在页面上放置的位置以及其他各种特征 。
在这一节中 , 我们会描述一些低层的绘图函数,用户也可以调用这些函数用于绘图 。首先我们先讲一下R怎么描述一个页面;然后我们讲怎么在页面上添加点,线和文字;最后讲一下怎么修改一些基本的图形 。
绘图区域与边界
R在绘图时 , 将显示区域划分为几个部分 。绘制区域显示了根据数据描绘出来的图像,在此区域内R根据数据选择一个坐标系,通过显示出来的坐标轴可以看到R使用的坐标系 。在绘制区域之外是边沿区 , 从底部开始按顺时针方向分别用数字1到4表示 。文字和标签通常显示在边沿区域内,按照从内到外的行数先后显示 。
添加对象
在绘制的图像上还可以继续添加若干对象,下面是几个有用的函数,以及对其功能的说明 。
?points(x, y, ...),添加点
?lines(x, y, ...) , 添加线段
?text(x, y, labels, ...),添加文字
?abline(a, b, ...) , 添加直线y=a bx
?abline(h=y, ...),添加水平线
?abline(v=x, ...),添加垂直线
?polygon(x, y, ...),添加一个闭合的多边形
?segments(x0, y0, x1, y1, ...),画线段
?arrows(x0, y0, x1, y1, ...) , 画箭头
?symbols(x, y, ...),添加各种符号
?legend(x, y, legend, ...),添加图列说明
Python实操:手把手教你用Matplotlib把数据画出来 作者:迈克尔·贝耶勒(Michael Beyeler)
如需转载请联系华章 科技
如果已安装Anaconda Python版本,就已经安装好了可以使用的 Matplotlib 。否则,可能要访问官网并从中获取安装说明:
正如使用np作为 NumPy 的缩写 , 我们将使用一些标准的缩写来表示 Matplotlib 的引入:
在本书中,plt接口会被频繁使用 。
让我们创建第一个绘图 。
假设想要画出正弦函数sin(x)的线性图 。得到函数在x坐标轴上0≤x<10内所有点的值 。我们将使用 NumPy 中的 linspace 函数来在x坐标轴上创建一个从0到10的线性空间,以及100个采样点:
可以使用 NumPy 中的sin函数得到所有x点的值 , 并通过调用plt中的plot函数把结果画出来:
你亲自尝试了吗?发生了什么吗?有没有什么东西出现?
实际情况是,取决于你在哪里运行脚本,可能无法看到任何东西 。有下面几种可能性:
1. 从.py脚本中绘图
如果从一个脚本中运行 Matplotlib,需要加上下面的这行调用:
在脚本末尾调用这个函数,你的绘图就会出现!
2. 从 IPython shell 中绘图
这实际上是交互式地执行Matplotlib最方便的方式 。为了让绘图出现,需要在启动 IPython 后使用所谓的%matplotlib魔法命令 。
接下来,无须每次调用plt.show()函数,所有的绘图将会自动出现 。
3. 从 Jupyter Notebook 中绘图
如果你是从基于浏览器的 Jupyter Notebook 中看这段代码,需要使用同样的%matplotlib魔法命令 。然而,也可以直接在notebook中嵌入图形,这会有两种输出选项:
在本书中,将会使用inline选项:
现在再次尝试一下:
上面的命令会得到下面的绘图输出结果:
如果想要把绘图保存下来留作以后使用,可以直接在 IPython 或者 Jupyter Notebook 使用下面的命令保存:
仅需要确保你使用了支持的文件后缀,比如.jpg、.png、.tif、.svg、.eps或者.pdf 。
作为本章最后一个测试,让我们对外部数据集进行可视化,比如scikit-learn中的数字数据集 。
为此,需要三个可视化工具:
那么开始引入这些包吧:
第一步是载入实际数据:
如果没记错的话,digits应该有两个不同的数据域:data域包含了真正的图像数据,target域包含了图像的标签 。相对于相信我们的记忆 , 我们还是应该对digits稍加 探索。输入它的名字,添加一个点号,然后按Tab键:digits.TAB,这个操作将向我们展示digits也包含了一些其他的域 , 比如一个名为images的域 。images和data这两个域,似乎简单从形状上就可以区分 。
两种情况中,第一维对应的都是数据集中的图像数量 。然而,data中所有像素都在一个大的向量中排列 , 而images保留了各个图像8×8的空间排列 。
因此,如果想要绘制出一副单独的图像 , 使用images将更加合适 。首先,使用NumPy的数组切片从数据集中获取一幅图像:
这里是从1797个元素的数组中获取了它的第一行数据,这行数据对应的是8×8=64个像素 。下面就可以使用plt中的imshow函数来绘制这幅图像:
上面的命令得到下面的输出:
此外,这里也使用cmap参数指定了一个颜色映射 。默认情况下,Matplotlib 使用MATLAB默认的颜色映射jet 。然而,在灰度图像的情况下 , gray颜色映射更有效 。
最后,可以使用plt的subplot函数绘制全部数字的样例 。subplot函数与MATLAB中的函数一样,需要指定行数、列数以及当前的子绘图索引(从1开始计算) 。我们将使用for 循环在数据集中迭代出前十张图像,每张图像都分配到一个单独的子绘图中 。
这会得到下面的输出结果:
关于作者:Michael Beyeler,华盛顿大学神经工程和数据科学专业的博士后 , 主攻仿生视觉计算模型,用以为盲人植入人工视网膜(仿生眼睛),改善盲人的视觉体验 。他的工作属于神经科学、计算机工程、计算机视觉和机器学习的交叉领域 。同时他也是多个开源项目的积极贡献者 。
本文摘编自《机器学习:使用OpenCV和Python进行智能图像处理》,经出版方授权发布 。
python函数绘图教学的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python 函数绘图、python函数绘图教学的信息别忘了在本站进行查找喔 。

    推荐阅读