python绘图中的 四个绘图技巧

目录
  • 技巧1: plt.subplots()
  • 技巧2: plt.subplot()
  • 技巧3: plt.tight_layout()
  • 技巧4: plt.suptitle()

数据集:

让我们导入包并更新图表的默认设置,为图表添加一点个人风格。 我们将在提示上使用 Seaborn 的内置数据集:

import seaborn as sns # v0.11.2
import matplotlib.pyplot as plt # v3.4.2
sns.set(style='darkgrid', context='talk', palette='rainbow')df = sns.load\_dataset('tips')
df.head()

技巧1: plt.subplots()

绘制多个子图的一种简单方法是使用 plt.subplots()

这是绘制 2 个并排子图的示例语法:

fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(10,4))
sns.histplot(data=df, x='tip', ax=ax[0])
sns.boxplot(data=df, x='tip', ax=ax[1]);

在这里,我们在一个图中绘制了两个子图。 我们可以进一步自定义每个子图。

 例如,我们可以像这样为每个子图添加标题:

fig, ax = plt.subplots(1, 2, figsize=(10,4))
sns.histplot(data=df, x='tip', ax=ax[0])
ax[0].set\_title("Histogram")
sns.boxplot(data=df, x='tip', ax=ax[1])
ax[1].set\_title("Boxplot");

在循环中将所有数值变量用同一组图表示:

numerical = df.select\_dtypes('number').columnsfor col in numerical:
 fig, ax = plt.subplots(1, 2, figsize=(10,4))
 sns.histplot(data=df, x=col, ax=ax[0])
 sns.boxplot(data=df, x=col, ax=ax[1]);

技巧2: plt.subplot()

另一种可视化多个图形的方法是使用 plt.subplot(),末尾没有 s

 语法与之前略有不同:

plt.figure(figsize=(10,4))
ax1 = plt.subplot(1,2,1)
sns.histplot(data=df, x='tip', ax=ax1)
ax2 = plt.subplot(1,2,2)
sns.boxplot(data=df, x='tip', ax=ax2);

当我们想为多个图绘制相同类型的图形并在单个图中查看所有图形,该方法特别有用:

plt.figure(figsize=(14,4))
for i, col in enumerate(numerical):
 ax = plt.subplot(1, len(numerical), i+1)
 sns.boxplot(data=df, x=col, ax=ax)

我们同样能定制子图形。例如加个title

plt.figure(figsize=(14,4))
for i, col in enumerate(numerical):
 ax = plt.subplot(1, len(numerical), i+1)
 sns.boxplot(data=df, x=col, ax=ax)
 ax.set\_title(f"Boxplot of {col}")

通过下面的比较,我们能更好的理解它们的相似处与不同处熟悉这两种方法很有用,因为它们可以在不同情况下派上用场。

技巧3: plt.tight_layout()

在绘制多个图形时,经常会看到一些子图的标签在它们的相邻子图上重叠,

如下所示:

categorical = df.select\_dtypes('category').columnsplt.figure(figsize=(8, 8))
for i, col in enumerate(categorical):
 ax = plt.subplot(2, 2, i+1)
 sns.countplot(data=df, x=col, ax=ax)

顶部两个图表的 x 轴上的变量名称被剪掉,右侧图的 y 轴标签与左侧子图重叠.使用plt.tight_layout很方便

plt.figure(figsize=(8, 8))
for i, col in enumerate(categorical):
 ax = plt.subplot(2, 2, i+1)
 sns.countplot(data=df, x=col, ax=ax)
plt.tight\_layout()

专业 看起来更好了。

技巧4: plt.suptitle()

真个图形添加标题:

plt.figure(figsize=(8, 8))
for i, col in enumerate(categorical):
 ax = plt.subplot(2, 2, i+1)
 sns.countplot(data=df, x=col, ax=ax)
plt.suptitle('Category counts for all categorical variables')
plt.tight\_layout()

此外,您可以根据自己的喜好自定义各个图。 例如,您仍然可以为每个子图添加标题。

到此这篇关于python绘图 四个绘图技巧的文章就介绍到这了,更多相关python 绘图技巧内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python matplotlib绘图详解

    目录 图标英文显示设置: 一.figure窗口及坐标轴设置 二.为特殊点加注解(Annotation) 总结 图标英文显示设置: 正常以字符串形式传进去字串,英文显示格式不是很美观,为了让文字更美观点,在书写时以这种格式写: r'$string$' 在这里,如果需要特殊数学字符使用 \ 转义,空格也需要转义 比如:r'$This\ is\ the\ some\ text.\ \mu\ \sigma_i\ \alpha_t$' 一.figure窗口及坐标轴设置 plt.figure(figsize

  • Python matplotlib实用绘图技巧汇总

    前言 在日常的业务数据分析 ,可视化是非常重要的步骤.这里总结了matplotlib常用绘图技巧,希望可以帮助大家更加更加高效的.美观的显示图表.作者:北山啦 Matplotlib 是 Python 的绘图库. 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案. 它也可以和图形工具包一起使用,如 PyQt 和wxPython. pip3 install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple impo

  • python turtle绘图命令及案例

    目录 一.绘图命令 1.画笔运动命令 2.画笔控制命令 3.全局控制命令 二.案例 1.案例一 2.案例二 3.案例三 4.案例四 5.案例五 一.绘图命令 操纵海龟绘图有很多命令,可以划分为三种:画笔运动命令.画笔控制命令.全局控制命令 1.画笔运动命令 命令 说明 turtle.forward(distance) 向当前画笔方向移动distance像素长度 turtle.backward(distance) 向当前画笔相反方向移动distance像素长度 turtle.right(degre

  • python绘图中的 四个绘图技巧

    目录 技巧1: plt.subplots() 技巧2: plt.subplot() 技巧3: plt.tight_layout() 技巧4: plt.suptitle() 数据集: 让我们导入包并更新图表的默认设置,为图表添加一点个人风格. 我们将在提示上使用 Seaborn 的内置数据集: import seaborn as sns # v0.11.2 import matplotlib.pyplot as plt # v3.4.2 sns.set(style='darkgrid', cont

  • 总结Python编程中三条常用的技巧

    在 python 代码中可以看到一些常见的 trick,在这里做一个简单的小结. json 字符串格式化 在开发 web 应用的时候经常会用到 json 字符串,但是一段比较长的 json 字符串是可读性较差的,不容易看出来里面结构的. 这时候就可以用 python 来把 json 字符串漂亮的打印出来. root@Exp-1:/tmp# cat json.txt {"menu": {"breakfast": {"English Muffin":

  • Python编程中实现迭代器的一些技巧小结

    yield实现迭代器 如引言中的描述,实现一个可迭代的功能要是每次都手动实现iter,next稍稍有点麻烦,所需的代码也是比较客观.在python中也能通过借助yield的方式来实现一个迭代器.yield有一个关键的作能,它能够中断当前的执行逻辑,保持住现场(各种值的状态,执行的位置等等),返回相应的值,下一次执行的时候能够无缝的接着上次的地方继续执行,如此循环反复知道满足事先设置的退出条件或者发生错误强制被中断. 其具体功能是可以当return使用,从函数里返回一个值,不同之处是用yield返

  • Python编程中NotImplementedError的使用方法

    Python编程中raise可以实现报出错误的功能,而报错的条件可以由程序员自己去定制.在面向对象编程中,可以先预留一个方法接口不实现,在其子类中实现. 如果要求其子类一定要实现,不实现的时候会导致问题,那么采用raise的方式就很好. 而此时产生的问题分类是NotImplementedError. 写一段代码如下: class ClassDemo: def test_demo(self): raiseNotImplementedError("my test: not implemented!&

  • Python实现识别文字中的省市区并绘图

    目录 1.准备 2.基本使用 3.高级使用 在做NLP(自然语言处理)相关任务时,经常会遇到需要识别并提取省.城市.行政区的需求.虽然我们自己通过关键词表一个个查找也能实现提取目的,但是需要先搜集省市区关键词表,相对而言比较繁琐. 今天给大家介绍一个模块,你只需要把字符串传递给这个模块,他就能给你返回这个字符串内的省.市.区关键词,并能给你在图片上标注起来,它就是 Cpca 模块. 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Pytho

  • 详解Python中matplotlib模块的绘图方式

    目录 1.matplotlib之父简介 2.matplotlib图形结构 3.matplotlib两种画绘图方法 方法一:使用matplotlib.pyplot 方法二:面向对象方法 1.matplotlib之父简介 matplotlib之父John D. Hunter已经去世,他的一生辉煌而短暂,但是他开发的的该开源库还在继续着辉煌.国内介绍的资料太少了,查阅了一番整理如下: 1968 出身于美国的田纳西州代尔斯堡. 之后求学于普林斯顿大学. 2003年发布Matplotlib 0.1版,初衷

  • Python光学仿真wxpython之DC绘图

    一般来说,系统与绘图程序之间的信息交换是由图形设备接口(Graphics Device Interface,GDI)实现的,在wxpython中,通过device context(DC)对象来实现GDI的功能. DC对象的创建非常简单,只需引用wx.PaintDC即可,而后则可通过dc来设置画笔dc.SetPen,有了画笔,就可以进行图形绘制了.于是,我们再考虑到图形的属性,包括形状.颜色与边框等,更细致地说,是图形形状.填充颜色.边框类型.边框颜色. 我们可以通过一个矩形的例子来说明: 上面的

  • Python读取txt某几列绘图的方法

    晚上帮同学用Python脚本绘图,大概需求是读取一个txt文件的两列分别作为x和y的值,绘图即可,代码如下: #coding:utf-8 import numpy as np import matplotlib.pyplot as plt import pylab ## 绘制该文件中的数据 ## 需要引入pylab库,里面用到的函数和MATLAB里的非常类似 def plotData(x, y): length = len(y) pylab.figure(1) pylab.plot(x, y,

  • 使用Python串口实时显示数据并绘图的例子

    使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 "'E:\Anaconda3\Scripts\pip-script.py' is not present."错误 使用 easy_install pip命令就能解决,换一条重新能执行安装的命令 常用方法: ser = serial.Serial(0) 是打开第一个串口 print ser.portstr 能看到第一个串口的标识,wi

  • 在pycharm中使用matplotlib.pyplot 绘图时报错的解决

    This application failed to start because it could not find or load the Qt platform plugin "windows" in " ". 百度谷歌了好久都没能解决这个问题都没能解决 开始我以为是缺少windows这个包,但是代码里并没有用到,所以我打断点去看代码到底问题出在哪里 发现问题出在matplotlib上面,我猜想是Qt和matplotlib版本不兼容导致的,于是我卸载了这两个插件

随机推荐