c++绘制函数图像_简洁优雅的Matplotlib可视化 | 绘制论文曲线图
这是“简洁优雅的Matplotlib可视化”栏目的第 2 篇文章!
我在上一期举了一个很简单的线形图例子——绘制sin和cos曲线。在这一期,我们将系统地讲解线形图和散点图的画法。
同样地,会在结尾放一我个详细的Python画图实战案例哦,喜欢的小伙伴请一定要点个赞再走呀!
绘制线形图
在所有图形中,最基本的应该就是线性方程y=f(x)的可视化了。
在Python脚本中绘制线形图,我们首先需要进行一系列基础操作——调用程序包、设置绘图样式、创建图形和坐标轴。此外,根据需要设置图形标签和图例,并记住在脚本末尾显示图形(plt.show)。
注:小伙伴们也可以直接复制上期推送结尾的案例,这个案例的主要用途是作为今后画图的模板。
用plt.plot()绘制线形图的代码如下:
x
其中,plt.plot()函数的括号中有两项,第一项是线性方程y=f(x)中的“x”,第二项是f(x)的方程,这个方程的代码写法通常与程序包Numpy有关。
在方程比较复杂、或方程比较长的情况下,也可以用定义f(x)的方法,如下:
x = np.linspace(0, 12, 121)
y = np.sin(x)
plt.plot(x, y)
两种代码绘制线形图的结果相同:
简单介绍完如何使用plt.plot()函数,我们再来讲一下如何定义x,这与plt.plot()的原理有关。plt.plot()的原理类似于微元法,是绘制一系列该方程曲线上的点,再用圆滑的曲线将这些点连接。
其中,函数np.linspace()是等差数列函数,np.linspace(a,b,c)的含义是在[a,b]区间上,取均匀地取间隔相等的c个点。因此在上一个例子中,[0,12]是图片中x的定义域,x每增长1,曲线上就增加10个点。c值应选取合适的值,过小的c值会使线形图变成折线,过大的c会增大系统运算量。下图为不同c值的绘图效果。
线条的颜色与风格
(1)线条颜色
可以通过在plt.plot()函数中设置参数来改变线条的颜色与风格。要修改颜色,可以用color参数,它支持各种颜色的字符串。颜色的不同表示方法如下所示:
# 设置线条的颜色与风格
# 标准颜色名称
plt.plot(x, np.sin(x - 0), color = 'blue')
# 缩写颜色代码(rgbcmyk)
plt.plot(x, np.sin(x - 1), color = 'g')
# 范围在0-1的灰度值
plt.plot(x, np.sin(x - 2), color = '0.75')
# 十六进制(RRGGBB,00-FF)
plt.plot(x, np.sin(x - 3), color = '#FFDD44')
# GRB元组,范围在0-1
plt.plot(x, np.sin(x - 4), color = (1.0, 0.2, 0.3))
# HTML颜色名称
plt.plot(x, np.sin(x - 5), color = 'chartreuse')
如果不指定颜色,Matplotlib就会为多条线自动循环使用一组默认的颜色。
(2)线条形状
与颜色的调整类似,也可以用linestyle调整线条的风格。
# 设置线条的风格
plt.plot(x, x + 0, linestyle = '-') # 实线
plt.plot(x, x + 1, linestyle = '--') # 虚线
plt.plot(x, x + 2, linestyle = '-.') # 点划线
plt.plot(x, x + 3, linestyle = ':') # 实点线
(3)颜色与形状组合
可以用一种更简洁的方式,将color与linestyle编码组合起来,作为plt.plot()函数中的一个非关键字参数使用。
# 设置线条的颜色与风格
plt.plot(x, x + 0, '-g') # 绿色实线
plt.plot(x, x + 1, '--c') # 青色虚线
plt.plot(x, x + 2, '-.k') # 黑色点划线
plt.plot(x, x + 3, ':r') # 红色实点线
***本期案例***
经过上述绘制线形图的讲解,我相信聪明的小伙伴已经掌握画线形图的基本技巧了。所以今天的案例难度升级,实用性也更为强大。
案例包含了很多新的知识点:
1. 用Pandas读取CSV格式的文件;
2. 提取CSV文件中的数据;
3. 将提取到的数据绘制成线形图;
4. 设置图例在图片的右下方;
5. 调整线条的宽度。
话不多说,代码奉上:
# 调用包
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd # 用Pandas读取csv格式的文件
sj = pd.read_csv('BMpl.csv') # 提取文件中的数据
x = sj['DATE']
BB = sj['B-B']
BM = sj['B-M']
MB = sj['M-B'] # 创建图像
fig = plt.figure() # 绘制累计频率曲线
plt.plot(x,BB,'-k',linewidth = 1)
plt.plot(x,BM,'--k',linewidth = 1)
plt.plot(x,MB,':k',linewidth = 1) # 设置题目与坐标轴名称
plt.title('cumulative frequency curve chart')
plt.ylabel('Cumulative frequency curve')
plt.xlabel('Time(min)') # 设置图例(置于右下方)
plt.legend(loc='lower right') # 显示图片
plt.show()
文件‘BMpl.csv’中储存的数据样例。(三组累计频率曲线)
代码输出的结果。
以上就是本期绘制线形图的全部内容啦!后面的几期会继续更新其他常用图表的画法,和交通学子常用的画图代码。喜欢的小伙伴就请关注、收藏、转发吧~
本文首发于微信公众号"交通科研Lab",更多资料和推送请扫码关注!
c++绘制函数图像_简洁优雅的Matplotlib可视化 | 绘制论文曲线图相关推荐
- c++ 绘制函数图像_【图像增强】CLAHE 限制对比度自适应直方图均衡化
文章来自:微信公众号[机器学习炼丹术]. 文章目录: 1 基本概述 2 竞赛中的CLAHE实现 3 openCV绘制直方图 4 对比度Contrast 5 Contrast Stretching 6 ...
- c++ 绘制函数图像_图像轮廓和分水岭算法
1. 寻找轮廓 findContours() 函数用于在二值图像中寻找轮廓.常与 drawContours() 函数配合使用:findContours() 函数检测到图像的轮廓后,就可以用 drawC ...
- 有计算机绘制函数结题报告,信息技术应用用计算机绘制函数图象
用计算机绘制函数图像 研究性学习报告 组长 黄懿晟 张智育组员 张鑫宇 王海彬 许乃越 李小强 申明军 任亚茹 陈涛静 谭雨佳 方燕 许博翔 郁香华 建辉 王宗显 陈亚丘 马莉 崔航 商健 课题成员 ...
- matplotlib.pyplot绘制函数图像希腊字母latex效果设置
matplotlib.pyplot绘制函数图像希腊字母latex效果设置 用matplotlib绘制函数图像时,有时候为了图形的含义更加清晰明了,需要在函数图形的备注上标明函数表达式,此时往往涉及到用 ...
- 利用R和Octave绘制函数图像和求解方程
任务1.绘制函数图像 1.利用R 方法一: plot(x,y) lines(loess.smooth(x,y),col='red',lwd=2) 方法二: <
- Matlab|绘制函数图像
欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 欢迎加入团队圈子!与作者面对面!直接点击! 一.绘制图像的常用 ...
- Python实现绘制函数图像——以Sigmoid函数为例
在深度学习的研究中,我们经常需要知道激活函数(阶跃函数)的图像,以此判断该神经网络的阈值,并更好的去对权重进行调整.但对于某些复杂的复合函数而言,我们非常困难手画出它的函数图像,这样不仅费时费力,而且 ...
- 如何用数学课件制作工具绘制函数图像
作为专业的数学课件制作工具,数学老师用几何画板可以绘制函数图像.熟练掌握绘制函数图像的方法,对提高数学教学效率很有帮助.下面以画函数y=(1/4)x2在区间[-2,3]上的图像为例详细讲解画函数图像的 ...
- Mac系统中怎么绘制函数图像?附绘制函数图像教程~
学数学常常要自己画图?画不对,画得慢,画的丑?Mac系统中怎么绘制函数图像?福利来了,mac系统下有非常方便的画函数图像的工具,可以快速地画出很多简单的,复杂的,2D的,3D的函数图像.简直就是学习数 ...
最新文章
- AI技术加持,让协作机器人更安全
- 皮一皮:说好的一起守护光和未来呢...
- LeetCode 452 Minimum Number of Arrows to Burst Balloons(贪心法)
- 【VM单机模拟系列】VMware P2V简单实现
- python实际应用方面的材料_python应用于哪些方面
- 金额逾千万!浪潮智能存储G2中标华中科技大学脑科学研究项目
- 不是纸上谈兵,VR原来真的可以缓解抑郁症
- html 动画过度转换的用法,css(动画,过渡,转换)
- jBPM与业务系统集成-通过定制Task Instance等方式实现
- Python 之pass 语句
- MySql字符串拼接
- java学习第123天,p750-761(05/23)干得漂亮
- 网络工程师必知的几款网络故障排除工具
- short 的算术运算
- 台式电脑电源接口介绍
- protect your eyes - 豆绿色
- 互联网日报 | 3月5日 星期五 | 抖音成为2020欧洲杯官方合作伙伴;携程GMV连续三年全球旅企第一;华为发布好望云服务...
- Linux的安装、连接、系统优化
- 阿里云FinalShell连接
- ffmpeg常用库、术语、API、数据结构总结
热门文章
- ucenter php7.0版,UCenter1.5.0/UCenter Home1.5/Discuz! 7.0
- 华为宣布:免费培养2000名Java开发者
- Gitlab+Docker实现持续集成(CI)与持续部署(CD)
- 实战 RocketMQ 流量削峰,怎么能错过这一篇!
- Spring框架----基于接口的动态代理
- 2017-2018-1 20155327 《信息安全系统设计基础》第7周学习总结
- HDU 2814 斐波那契循环节 欧拉降幂
- 问题-提示“请确定磁盘未满或未被写保护而且文件未被使用”
- 苹果推出Find My Friends好友追踪iOS应用
- 安装VS2008错误解决