Matplotlib数据可视化从入门到精通(持续更新)
- 前言
- 一、如何添加标题-title
- 二、如何添加文字-text
- 三、如何添加注释-annotate
- 四、如何设置坐标轴名称-xlabel/ylabel
- 五、如何添加图例-legend
- 六、如何调整颜色-color
- 七、如何切换线条样式-marker
- 八、如何显示数学公式-mathtext
- 九、如何显示网格-grid
- 十、如何调整坐标轴刻度-locator_params
- 十一、如何调整坐标轴范围-axis/xlim/ylim
- 十二、如何调整日期自适应-autofmt_xdate
- 十三、如何添加坐标轴-twinx
- 十四、如何填充区域-fill/fill_beween
- 十五、如何画一个填充好的形状-matplotlib.patche
- 十六、如何切换样式-plt.style.use
- 更多技巧
前言
Matplotlib是一个强大的可视化工具,是Python的绘图库,可与NumPy一起使用,提供了一种有效的MatLab开源替代方案,用来画图真的不要太香!
下面总结出常用的操作以及技巧,保证每个例子的代码都可以直接拿来运行。更多内容请查看官网
一、如何添加标题-title
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(0,10)
plt.title('chenqionghe')
plt.plot(x,x*x)
plt.show()

二、如何添加文字-text
官方文档
设置坐标和文字即可
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(-10,11,1)
y=x*x
plt.plot(x,y)
plt.title('chenqionghe')
plt.text(-2.5,30,'function y=x*x')
plt.show()

三、如何添加注释-annotate
- xy:为备注的坐标点
- xytext:备注文字的坐标(默认为xy的位置)
- arrowprops:在xy和xytext之间绘制一个箭头
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(-10,11,1)
y=x*x
plt.title('chenqionghe')
plt.plot(x,y)
plt.annotate('chenqionghe is a kind man',xy=(0,1),xytext=(-4,20),arrowprops={'headwidth':10,'facecolor':'r'})
plt.show()

四、如何设置坐标轴名称-xlabel/ylabel
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(1,20)
plt.xlabel('chenqionghe')
plt.ylabel('muscle')
plt.plot(x,x*x)
plt.show()

五、如何添加图例-legend
import numpy as np
import matplotlib.pyplot as plt
plt.plot(x,x)
plt.plot(x,x*2)
plt.plot(x,x*3)
plt.plot(x,x*4)
# 直接传入legend
plt.legend(['chenqionghe','light','weight','baby'])
plt.show()

六、如何调整颜色-color
传颜色参数,支持以下几种方式
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(1,5)
#颜色的几种方式
plt.plot(x,color='g')
plt.plot(x+1,color='0.5')
plt.plot(x+2,color='#FF00FF')
plt.plot(x+3,color=(0.1,0.2,0.3))
plt.show()

七、如何切换线条样式-marker
更多样式查看官方文档
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(1,5)
plt.plot(x,marker='o')
plt.plot(x+1,marker='>')
plt.plot(x+2,marker='s')
plt.show()

八、如何显示数学公式-mathtext
所有公式符号
格式如下:
\(作为开始和结束符,如\) \omega $,中间的将解析出公式中的符号
import numpy as np
import matplotlib.pyplot as plt
plt.title('chenqionghe')
plt.xlim([1,8])
plt.ylim([1,5])
plt.text(2,4,r'$ \alpha \beta \pi \lambda \omega $',size=25)
plt.text(4,4,r'$ \sin(0)=\cos(\frac{\pi}{2}) $',size=25)
plt.text(2,2,r'$ \lim_{x \rightarrow y} \frac{1}{x^3} $',size=25)
plt.text(4,2,r'$ \sqrt[4]{x}=\sqrt{y} $',size=25)
plt.show()

九、如何显示网格-grid
import numpy as np
import matplotlib.pyplot as plt
x='chenqionghe','light','weigtht','baby'
y=[15,30,45,10]
plt.grid()
# 也可以设置颜色、线条宽度、线条样式
# plt.grid(color='g',linewidth='1',linestyle='-.')
plt.plot(x,y)
plt.show()

十、如何调整坐标轴刻度-locator_params
同时调整x轴和y轴:plt.locator_params(nbins=20)
只调整x轴:plt.locator_params(‘'x',nbins=20)
只调整y轴:plt.locator_params(‘'y',nbins=20)
示例代码
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(0,30,1)
plt.plot(x,x)
# x轴和y轴分别显示20个
plt.locator_params(nbins=20)
plt.show()

十一、如何调整坐标轴范围-axis/xlim/ylim
- axis:[0,5,0,10],x从0到5,y从0到10
- xlim:对应参数有xmin和xmax,分别能调整最大值最小值
- ylim:同xlim用法
示例代码
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(0,30,1)
plt.plot(x,x*x)
#显示坐标轴,plt.axis(),4个数字分别代表x轴和y轴的最小坐标,最大坐标
#调整x为10到25
plt.xlim(xmin=10,xmax=25)
plt.plot(x,x*x)
plt.show()

十二、如何调整日期自适应-autofmt_xdate
有时候显示日期会重叠在一起,非常不友好,调用plt.gcf().autofmt_xdate(),将自动调整角度
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
x=pd.date_range('2020/01/01',periods=30)
y=np.arange(0,30,1)
plt.plot(x,y)
plt.gcf().autofmt_xdate()
plt.show()

十三、如何添加坐标轴-twinx
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(1,20)
y1=x*x
y2=np.log(x)
plt.plot(x,y1)
# 添加一个坐标轴,默认0到1
plt.twinx()
plt.plot(x,y2,'r')
plt.show()

十四、如何填充区域-fill/fill_beween
fill填充函数区域
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,5*np.pi,1000)
y1=np.sin(x)
y2=np.sin(2*x)
plt.plot(x,y1)
plt.plot(x,y2)
plt.fill(x,y1,'g')
plt.fill(x,y2,'r')
plt.title('chenqionghe')
plt.show()

fill_beween填充函数交叉区域
import numpy as np
import matplotlib.pyplot as plt
plt.title('chenqionghe')
x=np.linspace(0,5*np.pi,1000)
y1=np.sin(x)
y2=np.sin(2*x)
plt.plot(x,y1)
plt.plot(x,y2)
plt.fill_between(x,y1,y2,where=y1>y2,interpolate=True)
plt.show()

十五、如何画一个填充好的形状-matplotlib.patche
各种形状参考官方文档
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mptaches
xy1=np.array([0.2,0.2])
xy2=np.array([0.2,0.8])
xy3=np.array([0.8,0.2])
xy4=np.array([0.8,0.8])
fig,ax=plt.subplots()
#圆形,指定坐标和半径
circle=mptaches.Circle(xy1,0.15)
ax.add_patch(circle)
#长方形
rect=mptaches.Rectangle(xy2,0.2,0.1,color='r')
ax.add_patch(rect)
#多边形
polygon=mptaches.RegularPolygon(xy3,6,0.1,color='g')
ax.add_patch(polygon)
# 椭圆
ellipse=mptaches.Ellipse(xy4,0.4,0.2,color='c')
ax.add_patch(ellipse)
ax.axis('equal')
plt.show()

十六、如何切换样式-plt.style.use
matplotlib支持多种样式,可以通过plt.style.use切换样式,例如:
plt.style.use('ggplot')
输入 plt.style.available可以查看所有的样式
plt.style.available
['seaborn-dark',
'seaborn-darkgrid',
'seaborn-ticks',
'fivethirtyeight',
'seaborn-whitegrid',
'classic',
'_classic_test',
'fast',
'seaborn-talk',
'seaborn-dark-palette',
'seaborn-bright',
'seaborn-pastel',
'grayscale',
'seaborn-notebook',
'ggplot',
'seaborn-colorblind',
'seaborn-muted',
'seaborn',
'Solarize_Light2',
'seaborn-paper',
'bmh',
'tableau-colorblind10',
'seaborn-white',
'dark_background',
'seaborn-poster',
'seaborn-deep']
示例代码
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mptaches
plt.style.use('ggplot')
# 新建4个子图
fig,axes=plt.subplots(2,2)
ax1,ax2,ax3,ax4=axes.ravel()
# 第一个图
x,y=np.random.normal(size=(2,100))
ax1.plot(x,y,'o')
# 第二个图
x=np.arange(0,10)
y=np.arange(0,10)
colors=plt.rcParams['axes.prop_cycle']
length=np.linspace(0,10,len(colors))
for s in length:
ax2.plot(x,y+s,'-')
# 第三个图
x=np.arange(5)
y1,y2,y3=np.random.randint(1,25,size=(3,5))
width=0.25
ax3.bar(x,y1,width)
ax3.bar(x+width,y2,width)
ax3.bar(x+2*width,y3,width)
# 第四个图
for i,color in enumerate(colors):
xy=np.random.normal(size=2)
ax4.add_patch(plt.Circle(xy,radius=0.3,color=color['color']))
ax4.axis('equal')
plt.show()
默认样式

切换成ggplot样式后

更多技巧
到这里,常用的技巧已经差不多,建议最好自己运行一下加深印象,更多技巧可以查看下面的文章
Matplotlib数据可视化从入门到精通(持续更新)的更多相关文章
- python爬虫+数据可视化项目(关注、持续更新)
python爬虫+数据可视化项目(一) 爬取目标:中国天气网(起始url:http://www.weather.com.cn/textFC/hb.shtml#) 爬取内容:全国实时温度最低的十个城市气 ...
- Go从入门到精通(持续更新)
1.0 搭建环境 由于我们 Go官方网站 在我大天朝被和谐了,所以我们只能去 Go语言中文网 来下载了.Go的安装很简单,不像Java还要配置一大堆的东西,选择自己系统的对应版本,下载安装,像安装QQ ...
- matplotlib 数据可视化
图的基本结构 通常,使用 numpy 组织数据, 使用 matplotlib API 进行数据图像绘制. 一幅数据图基本上包括如下结构: Data: 数据区,包括数据点.描绘形状 Axis: 坐标轴, ...
- 数据可视化-svg入门基础(二)
接上一篇:数据可视化-svg入门基础(一),基础一主要是介绍了svg概念,元素样式设置等. svg是(scalable vector graphic)伸缩矢量图像. 一.目录 (1)图形元素 (2)文 ...
- Matplotlib数据可视化(1):入门介绍
1 matplot入门指南¶ matplotlib是Python科学计算中使用最多的一个可视化库,功能丰富,提供了非常多的可视化方案,基本能够满足各种场景下的数据可视化需求.但功能丰富从另一方面来 ...
- 【Data Visual】一文搞懂matplotlib数据可视化
一文搞懂matplotlib数据可视化 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为 ...
- Python - matplotlib 数据可视化
在许多实际问题中,经常要对给出的数据进行可视化,便于观察. 今天专门针对Python中的数据可视化模块--matplotlib这块内容系统的整理,方便查找使用. 本文来自于对<利用python进 ...
- 23、matplotlib数据可视化、绘图库模块
matplotlib官方文档:https://matplotlib.org/contents.html?v=20190307135750 matplotlib是一个绘图库,它可以创建常用的统计图,包括 ...
- 干货 | Bokeh交互式数据可视化快速入门
Bokeh简介 Bokeh是一款交互式可视化库,在浏览器上进行展示. Bokeh可以通过Python(或其它语言),快速便捷地为大型流数据集提供优雅简洁的高性能交互式图表. 安装 在python中有多 ...
随机推荐
- LCA - 求任意两点间的距离
There are n houses in the village and some bidirectional roads connecting them. Every day peole alwa ...
- 《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》-总结
一.什么是业务中台 概念来自于阿里,介于前台和后台(此后台指的是云计算.数据库.消息队列.缓存等基础服务) 采用共享式架构设计解决以往烟囱式架构设计的资源浪费.重复造轮.试错成本高的问题 阿里的中 ...
- 聊聊HTTP请求那一些事_HttpWebRequest_一篇就够了
最近工作比较忙,很久没有写东西了,今天抽点时间整体一下最近工作的一个知识点小结.http请求对我们来说一点都不模式,程序员的我们有可能天天就是和这一些打交道.无论是BS架构的程序,前后端的数据交互, ...
- 一起来学习XPATH,来看看除了正则表达式我们还能怎么抓取数据
参考学习的网站链接http://www.w3school.com.cn/xpath/xpath_intro.asp 首先理清楚一些常识 以此为例 <?xml version="1.0& ...
- python 进程管道
数据不安全,不常用 import time from multiprocessing import Pipe, Process def producer(prod, cons, name, food) ...
- spring cloud-config的client中/refresh的端点报错401
post访问/refresh端口报错如下 { "timestamp": 1537865395040, "status": 401, "error&qu ...
- arch_遇到的问题
archlinux安装 wiki安装 可以参考这个来安装 $如果你跟我一样是用校园网安装的$ 记得使用pppoe-setup 来联网 arclinux 图形界面安装 参考 kde图形安装 需要创建一个 ...
- 【javaScript】报getElementId()为Null的错误
若JavaScript代码写在<head>块中,若是javaScript,写JavaScript代码写在里面 window.οnlοad=function(){ js代码内容 } 若是jq ...
- 如何修改win7文件夹的显示方式为详细信息
1.首先对着空白处,鼠标右键单击,然后点击“排列方式” 选一个 还有 你还可以点击“查看” 选择图标大小.详细信息.平铺.列表 等2.点击我的电脑左上角的 组织 按钮 随后选择“文件夹和搜索选项” 再 ...
- .netcore 3.1高性能微服务架构:webapi规范
1.1 定义 1.基础接口:单一职责原则,每个接口只负责各自的业务,下接db,通用性强. 2.聚合接口:根据调用方需求聚合基础接口数据,业务性强. 1.2 协议 1. 客户端在通过 API 与后端服务 ...