最近研究Python数据分析,需要利用Matplotlib绘制图表,并将多个图表绘制在一张图中,经过一番折腾,利用matplotlib包下的subplot()函数即可实现此功能。

代码实现:

import matplotlib.pyplot as plt
import numpy as npclass Graph(object):def __init__(self):self.font = {'size': 13}plt.figure(figsize=(9, 6))plt.subplots_adjust(wspace=0.7, hspace=0.5)plt.rcParams['font.family'] = 'simhei'plt.rcParams['axes.unicode_minus'] = Falsedef twinx(self):a1 = plt.subplot(231)plt.title('双纵轴折线图', fontdict=self.font)a1.plot(subjects, v1, label='v1')a1.set_ylabel('v1')a1.legend(loc='upper right', bbox_to_anchor=[-0.5, 0, 0.5, 1], fontsize=7)a2 = a1.twinx()a2.plot(subjects, v2, 'r--', label='v2')a2.set_ylabel('v2')a2.legend(loc='upper left', bbox_to_anchor=[1, 0, 0.5, 1], fontsize=7)def scatter(self):plt.subplot(232)plt.title('散点图', fontdict=self.font)x = range(50)y_jiangsu = [np.random.uniform(15, 25) for i in x]y_beijing = [np.random.uniform(5, 18) for i in x]plt.scatter(x, y_beijing, label='v1')plt.scatter(x, y_jiangsu, label='v2')plt.legend(loc='upper left', bbox_to_anchor=[1, 0, 0.5, 1], fontsize=7)def hist(self):plt.subplot(233)plt.title('直方图', fontdict=self.font)x = np.random.normal(size=100)plt.hist(x, bins=30)def bar_dj(self):plt.subplot(234)plt.title('堆积柱状图', fontdict=self.font)plt.bar(np.arange(len(v1)), v1, width=0.6, label='v1')for x, y in enumerate(v1):plt.text(x, y, y, va='top', ha='center')plt.bar(np.arange(len(v2)), v2, width=0.6, bottom=v1, label='v2')for x, y in enumerate(v2):plt.text(x, y + 60, y, va='bottom', ha='center')plt.ylim(0, 200)plt.legend(loc='upper left', bbox_to_anchor=[1, 0, 0.5, 1], fontsize=7)plt.xticks(np.arange(len(v1)), subjects)def bar_bl(self):plt.subplot(235)plt.title('并列柱状图', fontdict=self.font)plt.bar(np.arange(len(v1)), v1, width=0.4, color='tomato', label='v1')for x, y in enumerate(v1):plt.text(x - 0.2, y, y)plt.bar(np.arange(len(v2)) + 0.4, v2, width=0.4, color='steelblue', label='v2')for x, y in enumerate(v2):plt.text(x + 0.2, y, y)plt.ylim(0, 110)plt.xticks(np.arange(len(v1)), subjects)plt.legend(loc='upper left', bbox_to_anchor=[1, 0, 0.5, 1], fontsize=7)def barh(self):plt.subplot(236)plt.title('水平柱状图', fontdict=self.font)plt.barh(np.arange(len(v1)), v1, height=0.4, label='v1')plt.barh(np.arange(len(v2)) + 0.4, v2, height=0.4, label='v2')plt.legend(loc='upper left', bbox_to_anchor=[1, 0, 0.5, 1], fontsize=7)plt.yticks(np.arange(len(v1)), subjects)def main():g = Graph()g.twinx()g.scatter()g.hist()g.bar_dj()g.bar_bl()g.barh()plt.savefig('坐标轴类.png')plt.show()if __name__ == '__main__':subjects = ['语文', '数学', '英语', '物理', '化学']v1 = [77, 92, 83, 74, 90]v2 = [63, 88, 99, 69, 66]main()

效果如下:

可以看到,一个画板上放了6个子图。达到了我们想要的效果。现在来解析刚刚的部分代码:

plt.figure(1):表示取第一块画板,一个画板就是一张图,如果你有多个画板,那么最后就会弹出多张图。

plt.subplot(231):221表示将画板划分为2行3列,然后取第1个区域。那么第几个区域是怎么界定的呢?这个规则遵循行优先数数规则.优先从行开始数,从左到右按顺序1234……然后再下一行。

参考资料:
python笔记:matplotlib的简单快速入门之多图合并(2)

Matplotlib的子图subplot的使用

使用matplotlib:subplot绘制多个子图

Matplotlib实现单画布绘制多个子图相关推荐

  1. Python matplotlib数据可视化 subplot绘制多个子图

    数据可视化的时候,有时需要将多个子图放在同一个画板上进行比较.通过使用GridSpec类配合subplot,可以很容易对子区域进行划定和选择,在同一个画板上绘制多个子图. 原文链接:https://y ...

  2. pyplot画多个图,在一个图中绘制多个子图

    pyplot绘制多个子图方法 matplotlib在一个图中绘制多个子图用plt.subplot()方法. import matplotlib.pyplot as plt import numpy a ...

  3. 用python绘制y=x,y=1+sinx,编写Python程序,使用numpy、pandas、matplotlib三个扩展库在一个画布中绘制4个子图.

    目录 1.编写Python程序绘制y=x图. 2.绘制表达式为1+sin(x)的图. 3.编写Python程序,使用numpy.pandas.matplotlib三个扩展库在一个画布中绘制4个子图,分 ...

  4. python画50个图-Matplotlib如何绘制多个子图

    作者:雪山飞猪 博客地址: https://www.cnblogs.com/chenqionghe/p/12355018.html 说明:本文经作者授权转载,禁止二次转载 Matplotlib是Pyt ...

  5. Matplotlib——绘制多个子图(Axes)及其布局

    本文介绍如何用matplotlib绘制多个子图,并介绍控制它们布局的方法.按照其布局方式,分为均一排布,规整排布和跨行列排布三种. 一.均一排布plt.subplots() 均一排布的含义:所有子图的 ...

  6. python如何画出多个独立的图片_python使用matplotlib:subplot绘制多个子图的示例

    数据可视化的时候,常常需要将多个子图放在同一个画板上进行比较,python 的matplotlib包下的subplot可以帮助完成子功能. part1 绘制如下子图 1 2 3 4 5 6 7 8 9 ...

  7. 【python】python matplotlib绘制并保存多张图片+绘制多张子图

    需求描述:画图对比观测值和预测值,绘制对比图及多张子图 绘制对比图 示例代码 import matplotlib.pyplot as plt import numpy as npobs_x_data ...

  8. python中使用matplotlib库绘制多个子图(subplot函数用法)

    matplotlib库由各种可视化类组成,其内部结构复杂.为便于用户使用,该库提供了matplotlib.pyplot子库用于绘制各类可视化图形,pyplot子库相当于一个快捷方式,通过它可以快速调用 ...

  9. Matplotlib笔记 · 绘图区域的结构和子图布局与划分(figure, axes, subplots)

    1. 绘图区域的结构 很多时候,我们需要将多张关系密切的图表放在一起展示,便于分析师比对差异或发现关联关系,这时候,我们就需要将画布切分成多个子区域,然后在选定的子区域上绘制需要的图表了.(本文原文出 ...

最新文章

  1. jmeter实现多并发
  2. Spark内存管理(3)—— 统一内存管理设计理念
  3. powershell开源新闻及简介
  4. treegrid修改css
  5. 如何解决wampmysqld服务无法启动,错误id=1067
  6. 举世闻名的 SQL 注入是什么?这个漫画告诉你!
  7. 如何开发一款游戏:游戏开发流程及所需工具
  8. 修改Android序列号(Serial Number)
  9. 忠实履行职责,热忱完成工作,坚持必胜信念,成就辉煌人生——《西点军校的经典法则》
  10. 分治法——最大子列和问题
  11. 【经验贴】Java搭建一个以yy直播为主的直播聊天室
  12. 计算机插入的u盘文件打不开,U盘插入电脑显示盘符却打不开的解决方法
  13. 大数据框架Hadoop篇之Hadoop入门
  14. 71个简单的做饭技巧
  15. 【Unity3D实战】RPG黑暗之光Scene1:创建开始场景
  16. iOS WKUserContentController
  17. python教程(从入门到巅峰)1
  18. DataWhale CV识别 读书笔记
  19. 郑重推荐使用WPS 2010
  20. PHPCMS任意文件下载之exp编写

热门文章

  1. 微信小程序-iphone打开页面空白,报错Miniprogramerror Syntaxerror...
  2. 量子计算机与低温,逼近绝对零度,和外太空一样的低温_服务器评测与技术-中关村在线...
  3. scroll-view 竖向滚动高度设置
  4. php get str length,Oracle自定义函数f_henry_GetStringLength
  5. python和PQ的完美结合——python批量刷新PQ工作簿模型
  6. vue关于element日历calendar组件上月、今天、下月、日历块点击事件
  7. 谈谈幼儿时期的孤独和成年后的残忍
  8. 天方夜谭,躲过热力学第二定律的时间结晶“永动机”在谷歌量子计算机中实现
  9. 使用Qt实现计算器功能
  10. windows 找不到文件'gpedit.msc'.请确定文件名是否正确后 windows10 家庭版 打不开组策略 不想更新 不想换版本