python 可视化:fig, ax = plt.subplots()画多表图的3中常见样例 自定义图表格式
目录
一、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中常见样例 自定义图表格式相关推荐
- plt画网格图_python 可视化:fig, ax = plt.subplots()画多表图的3中常见样例 自定义图表格式...
一.fig, ax = plt.subplots()的作用? 它是用来创建 总画布/figure"窗口"的,有figure就可以在上边(或其中一个子网格/subplot上)作图了, ...
- 【python matplotlib 】fig, ax = plt.subplots()画多表图
文章目录 一. fig, ax = plt.subplots()的作用 二.参数的含义 三.图上排列多个子图 四.把多个子图一起合并到一个图上 五.画图刻度.图例等字体.字体大小.刻度密度.线条样式设 ...
- python subplots_python fig,ax = plt.subplots()
fig,ax = plt.subplots() 使用该函数确定图的位置,掉用时要XXX=ax.(ax是位置) 等价于:fig = plt.figure() ax = fig.add_subplot(1 ...
- fig,ax = plt.subplots()
它是用来创建 总画布/figure"窗口"的,有figure就可以在上边(或其中一个子网格/subplot上)作图了,(fig:是figure的缩写). fig, ax = plt ...
- 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 ...
- python中fig_Matplotlib画图中fig,ax,plt的区别和联系
用python两年多了,然而至今画图时依然会对群魔乱舞的Matplotlib对象感到困惑,尤其是看起来作用都类似的fig,ax和plt以及各种各样的subplot. 我们先来看以下三个示例 # C1 ...
- 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 ...
- 如何将Processon中画好的图转为Visio可以打开并编辑的vsdx格式
如何将Processon中画好的图转为Visio可以打开并编辑的vsdx格式 很简单,在ProcessOn中将画好的图片保存为.svg格式,先看原图 保存为.svg格式 然后打开亿图图示软件(Edra ...
- python可视化(2-2)绘图对象(折线图、散点图、面积图、填充图)
本文主要介绍折线图.散点图.面积图和填充图 plt.plot是matplotlib最基础的接口,matplotlib作者也将这个接口设计得足够简单,以至于只需要输入一个参数(数组,列表型数据),就能够 ...
最新文章
- SAP SD 关于信用管理--信用更新
- grub error:unknown filesystem的解决方案
- mybatisplus 操作另一个数据库的数据_c#连接sql数据库以及操作数据库
- Condition - Java多线程编程
- 支援日本/厄瓜多尔震区 Skype推免费通话
- python网页请求超时_python爬虫多次请求超时的几种重试方法(6种)
- wpf 依赖强制回调
- html选择器 并列,CSS 中的选择器 (二)- 组合选择器
- PHP Xdebug调试专题
- it职位简称_IT行业的英文职位名称
- 全局快门与卷帘式快门
- 【干货】Chrome插件(扩展)开发全攻略
- wxs 实现小程序拖拽功能
- oracle index alter,Oracle alter index rebuild 一系列问题
- 邮件群发海外服务器,国内与国外在邮件群发营销中的差别
- Python数据结构栈,后进先出
- easyui图片放大功能(取巧)
- 完成端口 完成端口 完成端口 还是完成端口
- 数组 保存学生的成绩
- 《自动化学报》踩坑心得
热门文章
- 看不懂英文怎么办!学习编程,英语对初学者很重要吗?
- 计算机可用内存分配失败,安装内存和实际可用内存不一样什么原因
- 修改ttf字体美化显示效果
- iOS开发-进阶:被误解的MVC和被神化的MVVM(作者:唐巧)
- 说出ArrayList,Vector,nbsp;Linke…
- FCPX插件:视频转场插件Stupid Raisins Panel Pop
- 第5章 调优案例分析与实战
- FFmpeg 的sws_getContext函数 、sws_scale函数
- hadoop暂时/永久关闭安全模式
- 什么是游戏盾?快快网络安全产品