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使用方法相关推荐

  1. windows 命令行cmd安装python matplotlib模块后pycharm显示“ModuleNotFoundError: No module named ‘matplotlib‘解决方法

    问题描述: 通过cmd查看已安装的python模块: 显示已经安装了matplotlib模块,但在pycharm中导入该模块时提示: 解决方法: 发生这种问题的原因是pycharm当前项目所使用的解释 ...

  2. Python之Matplotlib画图方法

    Matplotlib是一个由John Hunter等开发的,用以绘制二维图形的Python模块.Matplotlib可以绘制多种形式的图形包括普通的线图,直方图,饼图,散点图以及误差 线图等:可以比较 ...

  3. Ubuntu14.04 64位+Python3.4环境下安装matplotlib的方法

    问题: 具体的问题是这样的: 我的系统是Ubuntu14.04 的64位系统,python3.4版本下,想使用matplotlib来做图. 由于matplotlib依赖numpy和python的图像库 ...

  4. python matplotlib pyplot方法_Matplotlib.pyplot 常用方法

    2.2.hold属性 hold属性默认为True,允许在一幅图中绘制多个曲线:将hold属性修改为False,每一个plot都会覆盖前面的plot. 但是目前不推荐去动hold这个属性,这种做法(会有 ...

  5. 第十章 Matplotlib绘图方法

    1.介绍 Matplotlib是一个很常用的python绘图库,它可以带着我们轻松地绘制各种图形,包括曲线图,折线图,条形图,饼图和3D图等.为什么要学这个呢,因为我们人工智能的数据结果必须要通过图形 ...

  6. Unresolved reference ‘matplotlib‘解决方法

    首先打开最左边的file-settings 然后点这个添加 找想添加的 最后点最下面的install Package 就可以啦

  7. Matplotlib数据可视化方法总结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:橡鱼  转自:Datawhale 数据可视化,就是指将结构或 ...

  8. ubuntu下matplotlib 升级

    问题描述 查看matplotlib 版本信息的方法 总结 问题描述 在使用 matplotlib 画 violinplot 这个图形的时候报错了.出现了下面的错误提示: AttributeError: ...

  9. python可视化:matplotlib学习笔记

    信息可视化是数据分析的一块重要内容.这是一个探索性的过程.比如说,可以帮助我们坚定离群值,或者必要的数据转换,又或者是构建一个理想的模型.对于其他的一些领域,也可以进行web可视化.Python有许多 ...

最新文章

  1. IDEA Maven 项目默认编译项目为JDK 1.5
  2. wordpress雪花下雪WP Snow Effect插件
  3. Springboot 整合 Mybatis 的完整 Web 案例
  4. 潜移默化学会WPF(安全篇二)--C#对称加密算法
  5. linux-msyql
  6. 以太坊 solidity return 返回值写法 3种格式
  7. AndroidStudio使用gradle出现Could not download... 或unable to resolve dependency for...
  8. matlab利用数值 积分的方法求,MATLAB求数值积分的方法
  9. 【解决】Git:hint:Pulling without specifying how to reconclie divergent branches is...
  10. 基于高德地图API — 绘制热力图初尝试
  11. 国外资源 - 含技术 - 收集
  12. 火车票能不能选座_12306可以选座位吗 12306怎么选座位方法介绍
  13. ReactOS LiveUSB
  14. swoole 连接mysql_swoole教程:用swoole4操作mysql连接池之读写分离
  15. 并查集解决重复员工问题
  16. C语言(二)BMP图像 文本数据保存为图像
  17. 最全哈夫曼树哈夫曼编码讲解,兄弟你值得拥有
  18. NOIP-2018 提高组(复赛) 模拟试题之--T1 帽子戏法
  19. 罗斯蒙特PH电极1056-01-22-32-AN智能型四线制变送器规格及特点
  20. mysql日期类型计算机_2014年计算机二级考试MySQL试题 1

热门文章

  1. 移动端echarts点击全屏按钮横屏全屏展示
  2. 家庭 upnp映射 设置
  3. 室内全景拍摄,鱼眼镜头怎么拍室内全景?
  4. div写input多选时间段标签,layui选择时间段
  5. 视频批量剪辑,将横屏视频改成竖屏最简单的方法
  6. 饥荒android百度云,饥荒:联机版
  7. 《上海市服务业发展引导资金使用和管理办法》沪府规〔2022〕22号
  8. 第三章 初窥天机之顺序程序设计
  9. 鸿蒙第一关boss出不来,求个关于鸿蒙界以及相关BOSS的章节
  10. 用Python画朵菊花