matplotlib数据可视化实例_matplotlib动画

matplotlib数据可视化实例_matplotlib动画本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。以下文章来源于Trochil蜂鸟数据,作者蜂鸟数据Trochil一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形。我们团队推出一个新的系列教程:Python数据可视化,针对初级和中级用户,将理论和示例代码相结合,使用matplotlib,seaborn,plotly等工具实现可视化。本文的主题是如何用Matplotlib创建子图..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

以下文章来源于Trochil蜂鸟数据 ,作者 蜂鸟数据Trochil

一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形。

Python数据分析:用Matplotlib可视化创建套图

 

我们团队推出一个新的系列教程:Python数据可视化,针对初级和中级用户,将理论和示例代码相结合,使用matplotlib, seaborn, plotly等工具实现可视化。

本文的主题是如何用Matplotlib创建子图。

Python数据分析:用Matplotlib可视化创建套图

 

Matplotlib有一个概念subplot:包含在Figure对象中的小型Axes对象。这允许我们在一幅图中创建很多个子图,方便对比数据。

创建子图的3种常用方法:

  1. fig.add_axes
  2. plt.subplots
  3. plt.GridSpec
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inlineplt.style.use("ggplot")

1. fig.add_axes

  1. 先调用plt.figure()创建Figure对象,图表是所有坐标的容器。
  2. 调用fig.add_axes()在图表的任意位置添加子图,该方法接收一个包含4个数字的列表: $[x, y, width, height]$,分别代表子图左下角的坐标(x,y),子图的宽度和高度,这四个数字的取值范围都是$[0,1]$,代表相对位置和大小。
  3. 最后调用ax.plot将数据映射到子图。
# 创建图表对象
fig = plt.figure(figsize=(10, 7))
# 创建子图ax1 = fig.add_axes([0, 0.5, 0.45, 0.45])  # 在图表的左上角创建一个子图
ax2 = fig.add_axes([0.5, 0, 0.45, 0.45])  # 在图表的右下方创建一个子图
# 左上角子图:曲线图x1 = np.linspace(-10, 10, 100)
ax1.plot(x1, np.sin(x1), color="red")
# 右下角子图:柱状图x2 = ["a", "b", "c", "d", "e", "f"]
y2 = [1.2, 1.3, 2.5, 0.25, 5, 1.56]
ax2.bar(x2, y2, color="blue")

Python数据分析:用Matplotlib可视化创建套图

 

2. plt.subplots

plt.subplots用于快速创建多个子图,这些子图会以网格状排列。函数返回长度为2的元组,第一个元素是Figure对象,第二个元素是坐标集合。

# 创建一个图形对象,拆分为2*3的网格,包含6个坐标对象
fig, axes = plt.subplots(    nrows=2,  # 定义行数
    ncols=3,  # 定义列数
    sharex=True,  # 是否共享x轴坐标    sharey=True,  # 是否共享y轴坐标    figsize=(10, 7)  # 图像大小
)# axes是2*3的numpy数组,可根据[row, col]索引获取单个坐标对象
# print(type(axes))
# print(axes)
for i in range(2):
    for j in range(3):
        axes[i, j].text(0.5, 0.5, str((i, j)), ha="center", fontsize=15)

Python数据分析:用Matplotlib可视化创建套图

 

3. plt.GridSpec

上面的案例创建了规则排列的子图(网格状),但有时候想创建不规则的子图,部分子图更大,展示核心信息,有的子图较小,展现辅助信息。

plt.GridSpec可实现这一点,工作原理是先创建一个网格状的蓝图,然后合并部分子图(类似于Excel中合并单元格的操作)。

  1. 调用plt.GridSpec创建网格状的蓝图
  2. 通过切片和索引按需求’合并’子图
  3. 调用ax.plot()将数据映射到图表
# 创建图表对象
fig = plt.figure(figsize=(10, 7))
# 创建2*3的'网格'蓝图
grid = plt.GridSpec(nrows=2, ncols=3, figure=fig)
# 网格对象可索引和切片,根据网格对象可创建坐标对象for row in range(2):
    for col in range(3):
        ax = plt.subplot(grid[row, col])        ax.text(0.5, 0.5, str((row, col)), ha="center", fontsize=15)
# 至此的效果跟plt.subplots相同,接下来我们展示如何合并子图

Python数据分析:用Matplotlib可视化创建套图

 

# 创建图表对象
fig = plt.figure(figsize=(10, 7))
# 创建2*3的'网格'蓝图
grid = plt.GridSpec(nrows=2, ncols=3, figure=fig)
# 合并子图ax1 = plt.subplot(grid[0, 0])
ax2 = plt.subplot(grid[0, 1:])  # 合并(0,1)和(0,2)位置的子图
ax3 = plt.subplot(grid[1, 0:2])  # 合并(1,0)和(1,1)位置的子图
ax4 = plt.subplot(grid[1, 2])
x = np.linspace(0, 10, 30)
ax1.plot(x, np.sin(x), "-r")
ax2.plot(x, np.cos(x), "-ob")
ax3.plot(x, np.sin(x + 10), "-oy")
ax4.plot(x, np.cos(x + 10), "-g")

Python数据分析:用Matplotlib可视化创建套图

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193975.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • RabbitMQ(二):Work Queues、循环分发、消息确认、持久化、公平分发

    RabbitMQ(二):Work Queues、循环分发、消息确认、持久化、公平分发

    2021年10月5日
    37
  • vim撤销、回退操作「建议收藏」

    vim撤销、回退操作「建议收藏」打个广告,请有意向加入腾讯的前端,将简历发送至mzxbupt@gmail.com在vi中按u可以撤销一次操作u  撤销上一步的操作Ctrl+r恢复上一步被撤销的操作注意:如果你输入“u”两次,你的文本恢复原样,那应该是你的Vim被配置在Vi兼容模式了。重做如果你撤销得太多,你可以输入CTRL-R(redo)回退前一个命令。换句话说,它撤销一个撤销。要看执行的…

    2022年6月16日
    407
  • qt设置程序图标_qt设置软件图标

    qt设置程序图标_qt设置软件图标在qt应用程序中,我们能想到的图标一般就以下三种:icon种类应用窗口左上角的图标setWindowIcon()状态栏上显示的图标setWindowIcon()可执行程序本身的图标两种设置方式,下面会讲对于以上三种图标都该怎么样设置呢?一.我们先来讨论前两种,分别是窗口左上角的图标和状态栏的图标,    其实这两种图标只需要设置一次就可以了,他们总是相同的,并没有专门针对状态栏图标设置的函数。二…

    2025年8月1日
    0
  • 结构体指针赋值[通俗易懂]

    结构体指针赋值[通俗易懂]//方法1:可以给p分配一段内存空间,并使其指向此空间:#includemain(){structabc{inta;};structabc*p;p=(structabc*)malloc(sizeof(structabc));p->a=1;printf(“%d\n”,p->a);}//方法2:可以让p指向一个已存在的内存空间:#i

    2022年7月11日
    24
  • 如何解决eclipse乱码问题?「建议收藏」

    如何解决eclipse乱码问题?「建议收藏」方法一:代码里面进行改变编码1.编码方式的gbk和utf不同,不可以互相转换,只有byte和utf或者byte和gbk之间的转换,之间的转码如下:2.我们还可以使用另一种转码方式来转码,具体如下:3.如果这两种方法,你都试验过,还没有转码成功的话,那就要看看你的控制台或者页面编码方式了:方法二:编码方式,控制台修改1.Window->Preferences…

    2022年5月25日
    34
  • f1 score 代码_f1 score loss 实现问题「建议收藏」

    f1 score 代码_f1 score loss 实现问题「建议收藏」在paddle上实现了一个f1loss函数:def_compute_loss(self,dec_output):tp=fluid.layers.sum(fluid.layers.cast(self.label*dec_output,dtype=”float32″))tn=fluid.layers.sum(fluid.layers.cast((1-self.label)*…

    2022年10月14日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号