matplotlib使用方法
matplotlib使用方法
- 1.matplotlib简介
- 2.matplotlib安装
- 3.matplotlib的使用
- 3.1Figure和Subplot
- 3.2调整subplot周围的间距
- 3.3颜色、标记和线型
- 3.4刻度、标签和图例
- 3.5注解以及在Subplot上绘图
- 3.6绘制(特殊)图形
- 3.7图表保存到文件
- 3.8matplotlib配置
- 4. 使用pandas和seaborn绘图
- 4.1线型图
- 4.2 柱状图
1.matplotlib简介
matplotlib是一个用于创建出版质量图表的桌面绘图包(主要是2D方面)。
该项目是由John Hunter于2002年启动的,matplotlib支持各种操作系统上许多不同的GUI后端,而且还能将图片导出为各种常见的矢量(vector)和光栅(raster)图:PDF、SVG、JPG、PNG、BMP、GIF等。
2.matplotlib安装
python中有许多的包,在使用是就可以直接在python中调用该包中的模块,为此,在使用一些包的时候,我们需要先去安装包,关于(如何导入包,包中的模块、以及如何制造包,在我的博客中的python专栏中介绍了这些内容,有需要的可以自行查阅)
安装的最简单直接的方法是:在python下的scripts文件进入cmd命令,然后输入:
pip install matplotlib
注意事项:
在安装的时候,由于每个人的安装环境是不尽相同,多以在安装时会会遇到一些问题,这时候可以在CSDN中查阅,有很多解决此类问题的帖子,在学习中也可遇到别的问题也需要查阅相关问题的解决办法
3.matplotlib的使用
首先是导入matplotlib中的一些模块
import matplotlib.pyplot as plt
案例1:(快速体验)
import matplotlib.pyplot as plt
import numpy as npdata=np.arange(10)
print(f'data={data}')
#上面的输出为:data=[0 1 2 3 4 5 6 7 8 9]
plt.plot(data)
plt.show()
运行结果:
tips:
此时一定有这样的疑问,在绘制图形是,为什么,只是提供一个数据,可以绘制出一个二维图形,之所以这样:
是因为在绘制图形时,会默认赋值给x轴的坐标是从0开始的数据例如:上图[0 1 2 3 4 5 6 7 8 9],所以第一个点是(0,0),第二个点是(1,1)后面的点以此类推
示例:修改x的坐标为[2,4,5,6,7,8,9,10,11,11]
修改后的代码为:
data_y=np.arange(10)
print(f'data={data_y}')
data_x=[2,4,5,6,7,8,9,10,11,11]
plt.plot(data_x,data_y)
plt.show()
输出结果为:
3.1Figure和Subplot
matplotlib的图像都位于Figure对象中,可以用plt.figure创建一个新的Figure
tips:
对图形进行分隔成不同的画图区域,和matlab中的划分是类似的
演示代码:
fig=plt.figure()
figure1=fig.add_subplot(2,2,1)plt.show()
运行结果:
注意事项
此时的add_subplot(2,2,1)的含义是将figure划分成2*2,也就是四份,然后取第一份
tips:
此时的排列和matlab是不一样的的matlab是按列排序
示例:(在一个图中绘制多个子图)
fig = plt.figure()
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
#此时在子图中绘制图形,不需要再使用plt.plot
ax1.plot(np.random.randn(50).cumsum(), 'k--')
ax2.hist(np.random.randn(100), bins=20, color='k', alpha=0.3)#绘制柱状图
ax3.scatter(np.arange(30), np.arange(30) + 3 * np.random.randn(30))#绘制散点图
plt.show()
运行结果:
3.2调整subplot周围的间距
fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)#设置相同的x轴和y轴
for i in range(2):for j in range(2):axes[i, j].hist(np.random.randn(500), bins=50, color='k', alpha=0.5)
plt.subplots_adjust(wspace=0, hspace=0)#设置高宽度百分比
plt.show()
3.3颜色、标记和线型
ax.plot(x, y, 'g--')#此时的g是绿色--是线性
ax.plot(x, y, linestyle='--', color='g')#此时的设计更加详细和上面的代码是等价的
tips:
上述设置的方式是和matlab是很类似的
3.4刻度、标签和图例
- pyplot接口的设计目的就是交互式使用,含有诸如xlim、xticks和xticklabels之类的方法。它们分别控制图表的范围、刻度位置、刻度标签等。其使用方式有以下两种:
-
调用时不带参数,则返回当前的参数值(例如,plt.xlim()返回当前的X轴绘图范围)
-
调用时带参数,则设置参数值(例如,plt.xlim([0,10])会将X轴的范围设置为0到10)
示例:设置标题、轴标签、刻度以及刻度标签
fig=plt.figure()
ax1=fig.add_subplot(1,1,1)ax1.plot(np.random.randn(1000).cumsum())
ticks = ax1.set_xticks([0, 250, 500, 750, 1000])#设置x轴显示数值的位置labels = ax1.set_xticklabels(['one', 'two', 'three', 'four', 'five'],#显示数值位置的名称rotation=30, fontsize='small')
ax1.set_title('My first matplotlib plot')#设置标题
ax1.set_xlabel('Stages')#设置x轴标签
ax1.set_ylabel('cumsum')#设置1y轴标签
plt.show()#显示图形
此时的标题也可以使用字典的方式批量设置:
示例:
fig=plt.figure()
ax1=fig.add_subplot(1,1,1)ax1.plot(np.random.randn(1000).cumsum())
ticks = ax1.set_xticks([0, 250, 500, 750, 1000])#设置x轴显示数值的位置labels = ax1.set_xticklabels(['one', 'two', 'three', 'four', 'five'],#显示数值位置的名称rotation=30, fontsize='small')
# ax1.set_title('My first matplotlib plot')#设置标题
# ax1.set_xlabel('Stages')#设置x轴标签
# ax1.set_ylabel('Cumsum')
# plt.show()props={'title':'My first matplotlib plot','xlabel':'Stages','ylabel':'Cumsum' }
ax1.set(**props)#这总方法和之前的函数传参的形式是类似的,可以参考我之前的博客
plt.show()
运行结果:
添加图例
fig=plt.figure()
ax1=fig.add_subplot(1,1,1)ax1.plot(np.random.randn(1000).cumsum(),label='one')
ax1.plot(np.random.randn(1000).cumsum(),label='two')
ax1.plot(np.random.randn(1000).cumsum(),label='three')
ticks = ax1.set_xticks([0, 250, 500, 750, 1000])#设置x轴显示数值的位置labels = ax1.set_xticklabels(['one', 'two', 'three', 'four', 'five'],#显示数值位置的名称rotation=30, fontsize='small')
# ax1.set_title('My first matplotlib plot')#设置标题
# ax1.set_xlabel('Stages')#设置x轴标签
# ax1.set_ylabel('Cumsum')
# plt.show()props={'title':'My first matplotlib plot','xlabel':'Stages','ylabel':'Cumsum' }
ax1.set(**props)#这总方法和之前的函数传参的形式是类似的,可以参考我之前的博客
# ax1.legend(loc='best')#添加图例
plt.legend(loc='best')#添加图例
plt.show()
注意事项:
在添加图例之前,一定要在各个图形中设置图例的值label='one’等,否则是没法添加图例的,图例的位置参数可以直接设置为loc='best’,含义是摆放在最佳位置
3.5注解以及在Subplot上绘图
1)text方法
示例:
fig=plt.figure()
ax1=fig.add_subplot(1,1,1)ax1.plot(np.random.randn(1000).cumsum(),label='one')
ax1.plot(np.random.randn(1000).cumsum(),label='two')
ax1.plot(np.random.randn(1000).cumsum(),label='three')
ticks = ax1.set_xticks([0, 250, 500, 750, 1000])#设置x轴显示数值的位置labels = ax1.set_xticklabels(['one', 'two', 'three', 'four', 'five'],#显示数值位置的名称rotation=30, fontsize='small')
# ax1.set_title('My first matplotlib plot')#设置标题
# ax1.set_xlabel('Stages')#设置x轴标签
# ax1.set_ylabel('Cumsum')
# plt.show()props={'title':'My first matplotlib plot','xlabel':'Stages','ylabel':'Cumsum' }
ax1.set(**props)#这总方法和之前的函数传参的形式是类似的,可以参考我之前的博客
# ax1.legend(loc='best')#添加图例
plt.legend(loc='best')#添加文本
ax1.text(300,0,'hello world',family='monospace', fontsize=10)
#前面的数值为添加的字符的位置,后面的是字符的内容以及尺寸等
# (也可以使用plt.text(300,0,'hello world',family='monospace', fontsize=10))
plt.show()
plt.close()
2)TeX 方程表达式
matplotlib在任何文本表达式中接受 TeX 方程表达式。 例如,要在标题中写入表达式,可以编写一个由美元符号包围的 TeX 表达式:
plt.title(r'$\sigma_i=15$')
3)annotate()方法
上面的text()基本命令将文本放置在轴域的任意位置。 文本的一个常见用法是对图的某些特征执行标注,而annotate()方法提供一些辅助功能,使标注变得容易。 在标注中,有两个要考虑的点:由参数xy表示的标注位置和xytext表示的文本位置。 这两个参数都是(x, y)元组。
import numpy as np
import matplotlib.pyplot as pltfig, ax = plt.subplots()t = np.arange(0.0, 5.0, 0.01)
s = np.sin(2 * np.pi * t)
line, = ax.plot(t, s, lw=2)ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),arrowprops=dict(facecolor='black', shrink=0.05),)
ax.set_ylim(-2, 2)
plt.show()
运行结果:
3.6绘制(特殊)图形
matplotlib有一些表示常见图形的对象在python中被称为块(patch)
(如Rectangle和Circle),可以在matplotlib.pyplot中找到,但完整集合位于matplotlib.patches
import matplotlib.pyplot as pltfig1 = plt.figure()
ax = fig1.add_subplot(1, 1, 1)rect = plt.Rectangle((0.2, 0.75), 0.4, 0.15, color='k', alpha=0.3)
circ = plt.Circle((0.7, 0.2), 0.15, color='b', alpha=0.3)
pgon = plt.Polygon([[0.15, 0.15], [0.35, 0.4], [0.2, 0.6]],color='g', alpha=0.5)ax.add_patch(rect)#先创建,再插入到图形中
ax.add_patch(circ)
ax.add_patch(pgon)
plt.show()
运行结果:
3.7图表保存到文件
文件类型是通过文件扩展名推断出来的,例如:(文件名.pdf)就会得到一个PDF文件。我在发布图片时最常用到两个重要的选项是dpi(控制“每英寸点数”分辨率)和bbox_inches(可以剪除当前图表周围的空白部分)。要得到一张带有最小白边且分辨率为400DPI的PNG图片
示例:
plt.savefig('figpath.png', dpi=400, bbox_inches='tight')
#第一个选项是保存的文件夹文件类型,第二个是文件的分辨率,第三个是白边控制
savefig(保存图片)参数 | 说明 |
---|---|
fnname | 含有文件路径的字符串或python的文件型对象。图像格式由文件扩展名推断得出 |
dpi | 图像分辨率 |
facecolor、edgecolor | 图像背景格式(默认为白色‘w’) |
format | 显示设置文件格式(‘png’,‘pdf’,‘svg’,‘ps’,‘eps’) |
bbox_inches | 图标需要保存的部分,如果设置为‘tight’,则尝试剪除图标周围的空白部分 |
3.8matplotlib配置
Python编程方式配置系统的方法是使用rc方法
例如,要将全局的图像默认大小设置为10×10
plt.rc('figure', figsize=(10, 10))
rc的第一个参数是希望自定义的对像,例如可以是:‘figure’、‘axes’、‘xtick’、‘ytick’、‘grid’、'legend’等。其后可以跟上一系列的关键字参数。一个简单的办法是将这些选项写成一个字典:
font_options = {'family' : 'monospace','weight' : 'bold','size' : 'small'}
plt.rc('font', **font_options)
链接: matplotlib的参考文档,有更多的matplotlib的使用方法.
4. 使用pandas和seaborn绘图
在pandas中,我们有多列数据,还有行和列标签。pandas自身就有内置的方法,用于简化从DataFrame和Series绘制图形。另一个库seaborn(https://seaborn.pydata.org/),由Michael Waskom创建的静态图形库。
Seaborn简化了许多常见可视类型的创建。
4.1线型图
Series和DataFrame都有一个用于生成各类图表的plot方法
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt s=pd.Series(np.random.randn(10).cumsum(),np.arange(0,100,10))
s.plot()
plt.show()
运行结果:
该Series对象的索引会被传给matplotlib,并用以绘制X轴。可以通过use_index=False禁用该功能。
X轴的刻度和界限可以通过xticks和xlim选项进行调节,Y轴就用yticks和ylim
pandas的大部分绘图方法都有一个可选的ax参数,它可以是一个matplotlib的subplot对象。这使你能够在网格布局中更为灵活地处理subplot的位置。
DataFrame的plot方法会在一个subplot中为各列绘制一条线。
df = pd.DataFrame(np.random.randn(10, 4).cumsum(0),columns=['A', 'B', 'C', 'D'],index=np.arange(0, 100, 10))
df.plot()
plt.show()
4.2 柱状图
plot.bar()和plot.barh()分别绘制水平和垂直的柱状图
示例:同时绘制两张图,并且显示,垂直柱状图和水平柱状图
fig,axs=plt.subplots(2,1)
data = pd.Series(np.random.rand(16), index=list('abcdefghijklmnop'))#数据
data.plot.bar(ax=axs[0], color='k', alpha=0.7)
data.plot.barh(ax=axs[1],color='k', alpha=0.7)#color='k'和alpha=0.7设定了图形的颜色为黑色
plt.show()
绘制多个数据
df = pd.DataFrame(np.random.rand(6, 4),index=['one', 'two', 'three', 'four', 'five', 'six'],columns=pd.Index(['A', 'B', 'C', 'D'], name='Genus'))#name为图例的标题,也可以不设置print(f'df={df}')
df.plot.bar()
plt.show()
水平显示
df = pd.DataFrame(np.random.rand(6, 4),index=['one', 'two', 'three', 'four', 'five', 'six'],columns=pd.Index(['A', 'B', 'C', 'D'], name='Genus'))print(f'df={df}')
# df.plot.bar()
df.plot.barh(stacked=False, alpha=0.5)#绘制水平柱状图stacked为是否堆积
plt.show()
堆积显示(也就是本来分开(每段)数据累加显示,每一段都是相同的颜色)
matplotlib使用方法相关推荐
- windows 命令行cmd安装python matplotlib模块后pycharm显示“ModuleNotFoundError: No module named ‘matplotlib‘解决方法
问题描述: 通过cmd查看已安装的python模块: 显示已经安装了matplotlib模块,但在pycharm中导入该模块时提示: 解决方法: 发生这种问题的原因是pycharm当前项目所使用的解释 ...
- Python之Matplotlib画图方法
Matplotlib是一个由John Hunter等开发的,用以绘制二维图形的Python模块.Matplotlib可以绘制多种形式的图形包括普通的线图,直方图,饼图,散点图以及误差 线图等:可以比较 ...
- Ubuntu14.04 64位+Python3.4环境下安装matplotlib的方法
问题: 具体的问题是这样的: 我的系统是Ubuntu14.04 的64位系统,python3.4版本下,想使用matplotlib来做图. 由于matplotlib依赖numpy和python的图像库 ...
- python matplotlib pyplot方法_Matplotlib.pyplot 常用方法
2.2.hold属性 hold属性默认为True,允许在一幅图中绘制多个曲线:将hold属性修改为False,每一个plot都会覆盖前面的plot. 但是目前不推荐去动hold这个属性,这种做法(会有 ...
- 第十章 Matplotlib绘图方法
1.介绍 Matplotlib是一个很常用的python绘图库,它可以带着我们轻松地绘制各种图形,包括曲线图,折线图,条形图,饼图和3D图等.为什么要学这个呢,因为我们人工智能的数据结果必须要通过图形 ...
- Unresolved reference ‘matplotlib‘解决方法
首先打开最左边的file-settings 然后点这个添加 找想添加的 最后点最下面的install Package 就可以啦
- Matplotlib数据可视化方法总结
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:橡鱼 转自:Datawhale 数据可视化,就是指将结构或 ...
- ubuntu下matplotlib 升级
问题描述 查看matplotlib 版本信息的方法 总结 问题描述 在使用 matplotlib 画 violinplot 这个图形的时候报错了.出现了下面的错误提示: AttributeError: ...
- python可视化:matplotlib学习笔记
信息可视化是数据分析的一块重要内容.这是一个探索性的过程.比如说,可以帮助我们坚定离群值,或者必要的数据转换,又或者是构建一个理想的模型.对于其他的一些领域,也可以进行web可视化.Python有许多 ...
最新文章
- IDEA Maven 项目默认编译项目为JDK 1.5
- wordpress雪花下雪WP Snow Effect插件
- Springboot 整合 Mybatis 的完整 Web 案例
- 潜移默化学会WPF(安全篇二)--C#对称加密算法
- linux-msyql
- 以太坊 solidity return 返回值写法 3种格式
- AndroidStudio使用gradle出现Could not download... 或unable to resolve dependency for...
- matlab利用数值 积分的方法求,MATLAB求数值积分的方法
- 【解决】Git:hint:Pulling without specifying how to reconclie divergent branches is...
- 基于高德地图API — 绘制热力图初尝试
- 国外资源 - 含技术 - 收集
- 火车票能不能选座_12306可以选座位吗 12306怎么选座位方法介绍
- ReactOS LiveUSB
- swoole 连接mysql_swoole教程:用swoole4操作mysql连接池之读写分离
- 并查集解决重复员工问题
- C语言(二)BMP图像 文本数据保存为图像
- 最全哈夫曼树哈夫曼编码讲解,兄弟你值得拥有
- NOIP-2018 提高组(复赛) 模拟试题之--T1 帽子戏法
- 罗斯蒙特PH电极1056-01-22-32-AN智能型四线制变送器规格及特点
- mysql日期类型计算机_2014年计算机二级考试MySQL试题 1