Python Matplotlib画图基础介绍
文章目录
- Matplotlib第一个简单的图形
- 坐标轴控制,标题
- 打上文字标注,公式
- 一个图中画多张子图
- 大小不一的多张子图
- 散点图
- 柱状图
- plt.rcParams参数设置
- 详细颜色字母对照表
- 参考资料
Matplotlib 是 Python 中最常用的一个绘图库,主要用于绘制各种图形,包括散点图、柱状图、3D图、等高线图等等。在做研究过程中肯定会经常用,本文做一个简单的入门介绍,也给出极佳的参考手册,以备查用。内容主要参考了[1]的内容,我自己用jupyter notebook实现了一遍,我会给出所有源码的文件。
重点推荐:https://matplotlib.org/gallery.html
该网页中收录了大量Matplotlib图形实例源码,基本上按需找到适当修改一下就行了,很棒!
除了Matplotlib之外再推荐一个高级统计画图工具:seaborn: statistical data visualization
Matplotlib第一个简单的图形
%matplotlib inline
import numpy as np
import matplotlib.pyplot as pltplt.figure(0)
X = np.random.normal(size=(12, 2))
#plt.scatter(X[:, 0], X[:, 1])
plt.plot(X[:,0],X[:,1],'mo') #m表示紫色,o表示小圆点,更多颜色见文末
plt.show()
坐标轴控制,标题
# create a new figure
plt.figure(1)
x = np.linspace(0, 2 * np.pi, 50)
y = np.sin(x)
plt.plot(x, y,label="sin(x)")
plt.plot(x, y * 2,label="2sin(x)")
plt.title("sin(x) & 2sin(x)") # 图像上方的标题
plt.xlim((0, np.pi*2)) # 横坐标的数值范围
plt.ylim((-3, 3)) # 纵坐标的数值范围
plt.xticks(np.linspace(0,np.pi*2,5)) # 认为指定在坐标轴上显示什么数字,我用linspace来画出5个值
#plt.xticks((0, np.pi * 0.5, np.pi, np.pi * 1.5, np.pi * 2))
plt.xlabel('XXX') # 标记横轴坐标名称
plt.ylabel('YYY') # 标记纵轴坐标名称
plt.legend(loc='upper right') # 标记标签,loc属性表示标签的位置,不写loc的话就是默认best,其他见下文
plt.show()
legend loc参数选项:
颜色 表示方式
蓝色 b
绿色 g
红色 r
青色 c
品红 m
黄色 y
黑色 k
白色 w
点的类型 表示方式
点 .
像素 ,
圆 o
方形 s
三角形 ^
线的类型 表示方式
直线 -
虚线 –
点线 :
点划线 -
打上文字标注,公式
有时候我们需要对特定的点进行标注,我们可以使用 plt.annotate 函数来实现。这里我们要标注的点是(x0, y0) = (π, 0)。我们也可以使用 plt.text 函数来添加注释。
plt.plot(x, y)x0 = np.pi
y0 = 0# 画出标注点
plt.scatter(x0, y0, s=50)plt.annotate('sin($\pi$)=%s' % y0, xy=(np.pi, 0), xycoords='data', xytext=(+30, -30),textcoords='offset points', fontsize=16,arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))plt.text(0.5, -0.25, "$TEXTsin(\pi)=0$", fontdict={'size': 16, 'color': 'r'})plt.show()
代码中的$\pi$是公式,参考latex公式去写就行了,很方便
对于 annotate 函数的参数,做一个简单解释:
‘sin(np.pi)=%s’ % y0 代表标注的内容,可以通过字符串 %s 将 y0 的值传入字符串;
参数xycoords='data’是说基于数据的值来选位置;
xytext=(+30, -30) 和textcoords='offset points’表示对于标注位置的描述 和 xy 偏差值,即标注位置是 xy 位置向右移动 30,向下移动30;
arrowprops 是对图中箭头类型和箭头弧度的设置,需要用 dict 形式传入。
一个图中画多张子图
有时候我们需要将多张子图展示在一起,可以使用 subplot() 实现。即在调用 plot() 函数之前需要先调用 subplot() 函数。该函数的第一个参数代表子图的总行数,第二个参数代表子图的总列数,第三个参数代表活跃区域。
plt.figure(2)
ax1 = plt.subplot(2, 2, 1) # (行,列,活跃区)
plt.plot(x, np.sin(x), 'r+')ax2 = plt.subplot(2, 2, 2) # 独立的y轴
plt.plot(x, 2 * np.sin(x), 'go')ax3 = plt.subplot(2, 2, 3)
plt.plot(x, np.cos(x), '-b')ax4 = plt.subplot(2, 2, 4, sharey=ax3) # 与 ax3 共享y轴
plt.plot(x, 2 * np.cos(x), 'y.')plt.show()
上面的 subplot(2, 2, x) 表示将图像窗口分为 2 行 2 列。x 表示当前子图所在的活跃区。
大小不一的多张子图
可以看到,上面的每个子图的大小都是一样的。有时候我们需要不同大小的子图。比如将上面第一张子图完全放置在第一行,其他的子图都放在第二行。
plt.figure(3)
ax1 = plt.subplot(2, 1, 1) # (行,列,活跃区)
plt.plot(x, np.sin(x), '-r+')ax2 = plt.subplot(2, 3, 4)
plt.plot(x, 2 * np.sin(x), 'g')ax3 = plt.subplot(2, 3, 5, sharey=ax2)
plt.plot(x, np.cos(x), 'b')ax4 = plt.subplot(2, 3, 6, sharey=ax2)
plt.plot(x, 2 * np.cos(x), 'y')plt.show()
散点图
画一个炫炫的散点图:
k = 500
x = np.random.rand(k)
y = np.random.rand(k)
size = np.random.rand(k) * 50 # 生成每个点的大小
colour = np.arctan2(y, x) # 生成每个点的颜色大小
plt.scatter(x, y, s=size, c=colour)
plt.colorbar() # 添加颜色栏plt.show()
柱状图
常用的柱状图:
k = 10
x = np.arange(k)
y = np.random.rand(k)
plt.bar(x, y) # 画出 x 和 y 的柱状图# 增加数值
for x, y in zip(x, y):plt.text(x, y , '%.2f' % y, ha='center', va='bottom')plt.show()
plt.rcParams参数设置
plt(matplotlib.pyplot)使用rc配置文件来自定义图形的各种默认属性,称之为rc配置或rc参数。
通过rc参数可以修改默认的属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等。rc参数存储在字典变量中,通过字典的方式进行访问。[2]
详细颜色字母对照表
参考资料
[1] https://www.jianshu.com/p/c41ac57cea33
[2] https://blog.csdn.net/weixin_39010770/article/details/88200298
[3] Matplotlib可视化及应用
[4] https://matplotlib.org/gallery.html
Python Matplotlib画图基础介绍相关推荐
- python画图中文显示_解决Linux系统中python matplotlib画图的中文显示问题
最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, scipy, matplotlib, jupyter)等进行一些 ...
- python matplotlib画图产生的Type 3 fonts字体没有嵌入问题
ScholarOne's 对python matplotlib画图产生的Type 3 fonts字体不兼容,更改措施: 在程序中添加如下语句 import matplotlib matplotlib. ...
- Python matplotlib画图出现No handles with labels found to put in legend
1.在使用Python matplotlib画图出现No handles with labels found to put in legend ,在本地调试时并不会出现这个错误,而部署到线上服务器之后 ...
- 解决Linux系统中python matplotlib画图的中文显示问题
解决Linux系统中python matplotlib画图的中文显示问题 参考文章: (1)解决Linux系统中python matplotlib画图的中文显示问题 (2)https://www.cn ...
- python word保存图_使用python matplotlib 画图导入到word中如何保证分辨率
在写论文时,如果是菜鸟级别,可能不会花太多时间去学latex,直接用word去写,但是这有一个问题,当我们用其他工具画完实验彩色图时,放到word中会有比较模糊,这有两个原因导致的. 原因一:图片导入 ...
- python画图模糊_使用python matplotlib 画图导入到word中如何保证分辨率
在写论文时,如果是菜鸟级别,可能不会花太多时间去学latex,直接用word去写,但是这有一个问题,当我们用其他工具画完实验彩色图时,放到word中会有比较模糊,这有两个原因导致的. 原因一:图片导入 ...
- python matplotlib 画图 不显示中文 中文乱码 设置中文字体
在使用python matplotlib 画图时,由于matplotlib 默认是使用DejaVu Sans这种字体,不支持中文,所以我们在使用matplotlib画图包含中文内容要显示时就会变成方框 ...
- Python matplotlib 画图 显示中文 中文乱码 无法显示负号
Python matplotlib 画图 显示中文 中文乱码 无法显示负号 import matplotlib.pyplot as pltplt.rcParams["font.sans-se ...
- 环境搭建:使用python matplotlib画图不显示中文问题解决
1.背景 python matplotlib.plt 使用 plt.title 写标题时,标题显示为方框,无法正常显示中文,而且基本上在一台新的服务器上配置python开发环境都会遇到这种问题,因此写 ...
最新文章
- php获取数组中,相同键名的键值之和
- 学python可以做什么副业-写代码做副业月入10K的方法都藏在这几个公众号里!
- Tomcat提示Null component
- Java代码块回调,QueueEvent - 队列化执行线程和代码块
- springboot启动太慢优化
- 离线安装python环境
- Google发转码工具 可将安卓程序转至iOS
- java快捷键设置sop,今日工作总结|sop整理
- cvtcolor函数_5 OpenCV几个函数操作实例
- php漂浮广告代码,js 居中漂浮广告_广告代码
- mysql 分库备份_如何分表分库备份及批量恢复?MySQL
- AndroidQQ登录
- 保险行业CRM客户关系管理系统解决方案
- Android平板能装fydeos,在 FydeOS 中如何安装安卓应用 - FydeOS 帮助手册
- html页中加入数学公式,Html+Css+JavaScript实现网页公式编辑器(一)
- ArcGIS基础实验操作100例--实验3旋转矢量要素
- java方法6_6 Java 方法
- vivos7e和OPPOK7x 的区别 哪个更值得入手
- 看看MapleSim中的建模元件有哪些
- k2p一直亮红灯搜不到信号_苹果手机音量小,别怪信号不好,关闭这个功能,声音瞬间变大...
热门文章
- 微信小程序HTTPS证书部署案例
- CodeForces--ZeptoLab Code Rush 2015 (我参加的第一场cf比赛)
- 杰理之GPIO汇总【篇】
- 计算机软考网络工程师难度大吗,国家软考的网络工程师与CCNP相比,哪个难?...
- supervisor中使用虚拟环境
- 阻碍NFT进一步发展的绊脚石都有哪些?从6个方面切入分析
- 活字印刷引入简单工厂模式
- 7-209 sdut-C语言实验-数位数7-210 sdut-C语言实验-小树快长高
- 知心王姐小饭桌 IM消息应用开发:一看看懂Protocol Buffer(协议篇)
- 我是梦想橡皮擦,这是我在 CSDN 所有博客系列的清单(2022年3月22日更新)