目录

一、fig, ax = plt.subplots()的作用?

二、参数的含义?

三、怎么在一个图上排列多个子图?

四、怎么把多个子图一起合并到一个图上?


《Python for Data Analysis》 2nd Edition

一、fig, ax = plt.subplots()的作用?

它是用来创建 总画布/figure“窗口”的,有figure就可以在上边(或其中一个子网格/subplot上)作图了,(fig:是figure的缩写)。

  • plt.subplot(111)是plt.subplot(1, 1, 1)另一个写法而已[引用链接],更完整的写法是plt.subplot(nrows=1, ncols=1, index=1)[官网matplot.pyplot.subplot链接]
  • fig, ax = plt.subplots()等价于fig, ax = plt.subplots(11)[引用链接]
  • fig, axes = plt.subplots(2, 3):即表示一次性在figure上创建成2*3的网格,使用plt.subplot()只能一个一个的添加[引用链接]:
fig = plt.figure()
ax = plt.subplot(231)
ax = plt.subplot(232)
ax = plt.subplot(233)
ax = plt.subplot(234)
ax = plt.subplot(235)
ax = plt.subplot(236)

二、参数的含义?

首先看 fig = plt.figure()

matpltlib.pyplot.figure(
num = None,               # 设定figure名称。系统默认按数字升序命名的figure_num(透视表输出窗口)e.g. “figure1”。可自行设定figure名称,名称或是INT,或是str类型;
figsize=None,             # 设定figure尺寸。系统默认命令是rcParams["figure.fig.size"] = [6.4, 4.8],即figure长宽为6.4 * 4.8;
dpi=None,                 # 设定figure像素密度。系统默命令是rcParams["sigure.dpi"] = 100;
facecolor=None,           # 设定figure背景色。系统默认命令是rcParams["figure.facecolor"] = 'w',即白色white;
edgecolor=None, frameon=True,    # 设定要不要绘制轮廓&轮廓颜色。系统默认绘制轮廓,轮廓染色rcParams["figure.edgecolor"]='w',即白色white;
FigureClass=<class 'matplotlib.figure.Figure'>,   # 设定使不使用一个figure模板。系统默认不使用;
clear=False,                     # 设定当同名figure存在时,是否替换它。系统默认False,即不替换。
**kwargs)

然后看ax = plt.subplot()

三、怎么在一个图上排列多个子图?

比如说我们想画个2*2的子图,每个子图对应一个表。

  • 先重点考虑2个步骤。

· 第1个步骤:创建多维窗口:

fig, axes = plt.subplots(2, 2)  # 此处是一个2*2的图

· 第2个步骤:设定各个透视子图在窗口的位置:

data.plot.bar(ax=axes[1,1], color='b', alpha=0.5)  # ax=[1,1] 即位置是第2行、第二列。(python从0开始计数,所以“1”代表第2的)data.plot.barh(ax=axes[0,1], color='k', alpha=0.5) # alpha:设定图表的透明度;
  • 再添加子透视图代码。

· 第3个步骤:得到完整的代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as pltfig, axes = plt.subplots(2, 2)data = pd.Series(np.random.rand(16), index=list('abcdefghijklmnop'))data.plot.bar(ax=axes[1,1], color='b', alpha = 0.5)
data.plot.barh(ax=axes[0,1], color='k', alpha=0.5)plt.show()

四、怎么把多个子图一起合并到一个图上?

最主要的一点是让多个图线共用一个x坐标轴。

  • 语句规定N个折线图共用一个x坐标(注意:y轴分主副轴):
import numpy as np
import matplotlib.pyplot as pltfig, ax1 = plt.subplots(1, 1)             # 做1*1个子图,等价于 " fig, ax1 = plt.subplot() ",等价于 " fig, ax1 = plt.subplots() "ax2 = ax1.twinx()                         # 让2个子图的x轴一样,同时创建副坐标轴。# 作y=sin(x)函数
x1 = np.linspace(0, 4 * np.pi, 100)
y1 = np.sin(x1)
ax1.plot(x1, y1)#  作y = cos(x)函数
x2 = np.linspace(0, 4 * np.pi, 100)       # 表示在区间[0, 4π]之间取100个点(作为横坐标,“线段是有无数多个点组成的”)。
y2 = np.cos(x2)
ax2.plot(x2, y2)plt.savefig('sin_cos_2.png')               # 将窗口另存为png格式图片

如果需要主副y轴都一样:就把ax1和ax2它俩用ax一个取代了。

  • 自定义图表样式:比如旋转x轴标签、上边和右边的坐标轴不显示、曲线和y轴对齐
import matplotlib.pyplot as pltplt.rcParams['font.family'] = ['SimHei']              # 解决不能输出中文的问题。不区分大小写,即SimHei’效果等价于‘simhei’,中括号可以不要
plt.rcParams['figure.autolayout'] = True              # 解决不能完整显示的问题(比如因为饼图太大,显示窗口太小)fig, ax = plt.subplots(1, 1, figsize=(12, 9))         # 进一步设定fig的size为12*9ax.spines['top'].set_visible(False)                   # 不显示图表框的上边框
ax.spines['right'].set_visible(False)                 # 不显示图表框的右边框ax.set_xlim(0, 10)                                    # 有时候x轴不会从0显示,使得折线图和y轴有间隙
ax.set_ylim(0, 1.3e8)                                 # 和x轴同理plt.xticks(range(0, 10), fontsize=12, rotation=80)    # 针对x轴的标签,指定我们想要设定的范围是(0, 10), 字体大小是12, 逆时针旋转80°plt.tick_params(bottom='off', left='off', labelbottom='on', lableleft='on')  # 使x轴和y轴不带比例标识点, labelbottom设定下边、即x轴的标签是否显示。< blabla... >plt.suptitle('自定义图表', fontsize=400, ha='center')  # 即标题在x轴和y轴形成的方框内部,如下图(详细用法见下注释)。如果需要标题在这上方,使用 plt.title(blabla)
plt.show()

对于multiple subplots一般情况下,

1)设置 plt.xticks(range(0, 10))只会对最后一个ax起作用。要想作用于所有subplots,要这样:

for ax in axes:ax.set_xticks(range(0, 10))

2)标题:显示中文方面-在各个子图上要这样:

plt.title('某个子图的中文title', fontproperties='simhei')

因为plt.rcParams['font.family'] = 'simhei' 只对(多个子图的)整体标题有效。
整体的标题要这样设置:

plt.suptitle(‘全体子图的中文title’)

3)xticks的旋转方面。例如上面的主副坐标轴的共x轴,要这样:

ax1.set_xticklabels(['str format labels'], rotation=80)

而代码末尾这样设置无效:plt.xticks(x, rotation=80)。更具体的ticks和labels的分析点击<链接>。​​

python 可视化:fig, ax = plt.subplots()画多表图的3中常见样例 自定义图表格式相关推荐

  1. plt画网格图_python 可视化:fig, ax = plt.subplots()画多表图的3中常见样例 自定义图表格式...

    一.fig, ax = plt.subplots()的作用? 它是用来创建 总画布/figure"窗口"的,有figure就可以在上边(或其中一个子网格/subplot上)作图了, ...

  2. 【python matplotlib 】fig, ax = plt.subplots()画多表图

    文章目录 一. fig, ax = plt.subplots()的作用 二.参数的含义 三.图上排列多个子图 四.把多个子图一起合并到一个图上 五.画图刻度.图例等字体.字体大小.刻度密度.线条样式设 ...

  3. python subplots_python fig,ax = plt.subplots()

    fig,ax = plt.subplots() 使用该函数确定图的位置,掉用时要XXX=ax.(ax是位置) 等价于:fig = plt.figure() ax = fig.add_subplot(1 ...

  4. fig,ax = plt.subplots()

    它是用来创建 总画布/figure"窗口"的,有figure就可以在上边(或其中一个子网格/subplot上)作图了,(fig:是figure的缩写). fig, ax = plt ...

  5. python使用使用对数坐标系 fig, ax = plt.subplots() ax.set_xscale(“log“) ax.set_yscale(“log“)

    python使用使用对数坐标系 newX = [] newY = [] for i in range(len(x)):if y[i] != 0 :newX.append(x[i])newY.appen ...

  6. python中fig_Matplotlib画图中fig,ax,plt的区别和联系

    用python两年多了,然而至今画图时依然会对群魔乱舞的Matplotlib对象感到困惑,尤其是看起来作用都类似的fig,ax和plt以及各种各样的subplot. 我们先来看以下三个示例 # C1 ...

  7. python显示图像某列的颜色值_Python Pandas Matplotlib图由单列中定义的类型值着色

    我有以下格式的数据: import pandas as ps table={'time':[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5],\ 'data':[1,1,2,2,2,1,2 ...

  8. 如何将Processon中画好的图转为Visio可以打开并编辑的vsdx格式

    如何将Processon中画好的图转为Visio可以打开并编辑的vsdx格式 很简单,在ProcessOn中将画好的图片保存为.svg格式,先看原图 保存为.svg格式 然后打开亿图图示软件(Edra ...

  9. python可视化(2-2)绘图对象(折线图、散点图、面积图、填充图)

    本文主要介绍折线图.散点图.面积图和填充图 plt.plot是matplotlib最基础的接口,matplotlib作者也将这个接口设计得足够简单,以至于只需要输入一个参数(数组,列表型数据),就能够 ...

最新文章

  1. SAP SD 关于信用管理--信用更新
  2. grub error:unknown filesystem的解决方案
  3. mybatisplus 操作另一个数据库的数据_c#连接sql数据库以及操作数据库
  4. Condition - Java多线程编程
  5. 支援日本/厄瓜多尔震区 Skype推免费通话
  6. python网页请求超时_python爬虫多次请求超时的几种重试方法(6种)
  7. wpf 依赖强制回调
  8. html选择器 并列,CSS 中的选择器 (二)- 组合选择器
  9. PHP Xdebug调试专题
  10. it职位简称_IT行业的英文职位名称
  11. 全局快门与卷帘式快门
  12. 【干货】Chrome插件(扩展)开发全攻略
  13. wxs 实现小程序拖拽功能
  14. oracle index alter,Oracle alter index rebuild 一系列问题
  15. 邮件群发海外服务器,国内与国外在邮件群发营销中的差别
  16. Python数据结构栈,后进先出
  17. easyui图片放大功能(取巧)
  18. 完成端口 完成端口 完成端口 还是完成端口
  19. 数组 保存学生的成绩
  20. 《自动化学报》踩坑心得

热门文章

  1. 看不懂英文怎么办!学习编程,英语对初学者很重要吗?
  2. 计算机可用内存分配失败,安装内存和实际可用内存不一样什么原因
  3. 修改ttf字体美化显示效果
  4. iOS开发-进阶:被误解的MVC和被神化的MVVM(作者:唐巧)
  5. 说出ArrayList,Vector,nbsp;Linke…
  6. FCPX插件:视频转场插件Stupid Raisins Panel Pop
  7. 第5章 调优案例分析与实战
  8. FFmpeg 的sws_getContext函数 、sws_scale函数
  9. hadoop暂时/永久关闭安全模式
  10. 什么是游戏盾?快快网络安全产品