Python在同一个图上并排箱线图

2023-12-31

我正在尝试在 Python 2.7 中为下面 Pandas 数据框中 E 列中的每个分类值生成一个箱线图

          A         B         C         D  E
0  0.647366  0.317832  0.875353  0.993592  1
1  0.504790  0.041806  0.113889  0.445370  2
2  0.769335  0.120647  0.749565  0.935732  3
3  0.215003  0.497402  0.795033  0.246890  1
4  0.841577  0.211128  0.248779  0.250432  1
5  0.045797  0.710889  0.257784  0.207661  4
6  0.229536  0.094308  0.464018  0.402725  3
7  0.067887  0.591637  0.949509  0.858394  2
8  0.827660  0.348025  0.507488  0.343006  3
9  0.559795  0.820231  0.461300  0.921024  1

我愿意使用 Matplotlib 或任何其他绘图库来完成此操作。到目前为止,上面的代码可以将所有类别组合在一个图上。以下是生成上述数据并绘制绘图的代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
fig, ax = plt.subplots()

# Data
df = pd.DataFrame(np.random.rand(10,4),columns=list('ABCD'))
df['E'] = [1,2,3,1,1,4,3,2,3,1]

# Boxplot
bp = ax.boxplot(df.iloc[:,:-1].values, widths=0.2)
plt.show()

在此示例中,类别为 1、2、3、4。我想在同一个图上并排绘制单独的箱线图,仅针对类别 1 和 2,并在图例中显示类别名称。

有没有办法做到这一点?

附加信息:

输出应该类似于第 3 个图here http://seaborn.pydata.org/generated/seaborn.boxplot.html- 将“是”、“否”替换为“1”、“2”。


从这个开始:

import numpy
import pandas
from matplotlib import pyplot
import seaborn
seaborn.set(style="ticks")

# Data
df = pandas.DataFrame(numpy.random.rand(10,4), columns=list('ABCD'))
df['E'] = [1, 2, 3, 1, 1, 4, 3, 2, 3, 1]

你有几个选择。如果单独的轴没问题,

fig, axes = pyplot.subplots(ncols=4, figsize=(12, 5), sharey=True)
df.query("E in [1, 2]").boxplot(by='E', return_type='axes', ax=axes)

如果你想要1轴,我认为seaborn会更容易。您只需要清理数据即可。

ax = (
    df.set_index('E', append=True)  # set E as part of the index
      .stack()                      # pull A - D into rows 
      .to_frame()                   # convert to a dataframe
      .reset_index()                # make the index into reg. columns
      .rename(columns={'level_2': 'quantity', 0: 'value'})  # rename columns
      .drop('level_0', axis='columns')   # drop junk columns
      .pipe((seaborn.boxplot, 'data'), x='E', y='value', hue='quantity', order=[1, 2])  
)
seaborn.despine(trim=True)

Seaborn 的一个很酷的地方是,稍微调整参数可以在绘图布局方面取得很大的成果。如果我们切换我们的hue and x变量,我们得到:

ax = (
    df.set_index('E', append=True)  # set E as part of the index
      .stack()                      # pull A - D into rows 
      .to_frame()                   # convert to a dataframe
      .reset_index()                # make the index into reg. columns
      .rename(columns={'level_2': 'quantity', 0: 'value'})  # rename columns
      .drop('level_0', axis='columns')   # drop junk columns
      .pipe((seaborn.boxplot, 'data'), x='quantity', y='value', hue='E', hue_order=[1, 2])  
)
seaborn.despine(trim=True)

如果您好奇,生成的数据框看起来像这样:

    E quantity     value
0   1        A  0.935433
1   1        B  0.862290
2   1        C  0.197243
3   1        D  0.977969
4   2        A  0.675037
5   2        B  0.494440
6   2        C  0.492762
7   2        D  0.531296
8   3        A  0.119273
9   3        B  0.303639
10  3        C  0.911700
11  3        D  0.807861
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python在同一个图上并排箱线图 的相关文章

  • [matplotlib]:理解“set_ydata”方法

    我试图了解如何使用 set ydata 方法 我在 matplotlib 网页上找到了很多示例 但我只找到了 set ydata 被 淹没 在大型且难以理解的代码中的代码 我想要一个简短且易于理解的代码来帮助我理解 set ydata 的工
  • 如果出现重复,则主键取正值

    我有一个数据框df Key1 Key2 Value K11 K21 V1 K11 K21 V1 K13 K23 V2 K13 K23 V2 现在 例如对于相同的键 K11 K21 组合 我们有 2 个值 一负一正 如何从此 df 中仅获取正
  • 如何从嵌套字典中获取键?

    我在字典中的字典中有一个列表 FirmA ProductA Color1 Color2 Color3 我想构建第一公司字典级别的键列表 然后 我需要根据公司密钥访问第二级产品字典 最后 我需要根据字典级别 2 产品 中的产品密钥访问颜色列表
  • 如何将多个 parquet 文件附加到 Pandas 中的一个数据帧

    我正在使用 Spark 和 Pandas 解压缩 snappy parquet 文件 我有 180 个文件 我的 Jupyter 笔记本中有 7GB 数据 根据我的理解 我需要创建一个循环来获取所有文件 用 Spark 解压缩它们并附加到
  • 数据帧中标志切换之间的行的总和/平均值

    我有一个像这样的数据框 id power flag 0 20 0 1 25 0 2 26 1 3 30 1 4 18 0 5 30 0 6 19 0 7 21 1 8 23 0 我正在尝试获取行的平均值 总和power柱子 输出应该是这样的
  • 字符串编码和解码?

    这是我对错误消息的尝试 我究竟做错了什么 string decode ascii ignore UnicodeEncodeError ascii 编解码器无法对字符 u xa0 进行编码 位置 37 序数不在范围内 128 string e
  • 将滑块添加到 matplotlib 图表

    我有一个 matplotlib 代码 可以生成一个简单的 2D 图表 我想为 hte 和 hre 变量 它们是数组 添加滑块小部件 以便可以交互地增加或减少 hte 和 hre 值 有没有办法 我确信有 因为我已经看到了某物 http ma
  • xlrd.biffh.XLRDError:Excel xlsx 文件;不支持[重复]

    这个问题在这里已经有答案了 我正在尝试使用读取启用宏的 Excel 工作表pandas read excel与 xlrd 库 它在本地运行良好 但是当我尝试将其推送到 PCF 时 我收到此错误 2020 12 11T21 09 53 441
  • 为什么我的代码不能根据字典解码加密字符串?

    我有一本字典 其中包含代表字母的键和值 例如一个简单的 DICT CODE b g n a p o x d t y 我收到了一个加密代码 并将该字符串转换为一个列表 其中每个项目都是一个单词 我需要根据字典中的项目来解决它 代码示例是 wo
  • PyMC3-自定义 theano Op 进行数值积分

    我使用 PyMC3 进行参数估计 使用必须定义的特定似然函数 我用谷歌搜索了一下 发现我应该使用densitydist实现用户定义的似然函数的方法 但它不起作用 如何在 PyMC3 中合并用户定义的似然函数并找出最大 aposteriori
  • distutils.errors.DistutilsPlatformError:需要 Microsoft Visual C++ 14.0

    我想安装Pandas在我的机器上 但出现以下消息 错误 distutils errors DistutilsPlatformError 需要 Microsoft Visual C 14 0 获取它与 Microsoft Visual C 构
  • 如何使用 sys.path.append 在 Python 中导入文件?

    我的桌面上有两个目录 DIR1 and DIR2其中包含以下文件 DIR1 file1 py DIR2 file2 py myfile txt 这些文件包含以下内容 file1 py import sys sys path append s
  • 将文本注释到轴并对齐为圆

    我正在尝试在轴上绘制文本并将该文本与圆对齐 更准确地说 有一些具有不同坐标 x y 的点位于该圆内 并使用以下命令创建 ax scatter x y s 100 我想用圆圈连接并标记每个点 Cnameb 文本的坐标由 xp yp 定义 因此
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm
  • sqlalchemy 具有相同表名的多个数据库不起作用

    我正在使用 SQLAlchemy 使用 Python 处理两个数据库 这些数据库共享表名 因此在运行代码时收到错误消息 错误消息是 sqlalchemy exc InvalidRequestError Table wo is already
  • Python Tkinter 在 GUI 中嵌入 Matplotlib

    我正在尝试将绘图嵌入到用 Python 编码的 Tkinter GUI 中 我相信下面的代码成功地将图形放入画布中 但我无法控制 GUI 网格中的画布位置 我希望能够将 GUI 的一部分作为情节 而不是全部 我怎样才能定位这个画布小部件 u
  • 部署应用程序时“matplotlib”没有属性“cm”

    我正在尝试部署一个使用 Dash 开发的应用程序 该应用程序使用一些 matplotlib 函数 当我在本地运行应用程序时 它运行顺利并且一切正常 但是 当我使用相同的代码部署它时 我使用heroku进行部署 安装的 matplotlib
  • 查找两个 Pandas 数据框中的公共行(交集)

    假设我有两个这种格式的数据框 称它们为df1 and df2 user id business id rating rLtl8ZkDX5vH5nAx9C3q5Q eIxSLxzIlfExI6vgAbn2JA 4 C6IOtaaYdLIT5f
  • 当在 python linux 中执行命令 os.system() 时,在 python 中给出响应 yes/no

    考虑一个像这样的命令 yum install boto 当我在终端中执行时 要继续 会询问我是 否 我可以像这样用 python 回应它吗 os system yum install boto Next Yes 将通过相同的 python
  • 使用最新值进行采样

    考虑以下系列 created at 2014 01 27 21 50 05 040961 80000 00 2014 03 12 18 46 45 517968 79900 00 2014 09 05 20 54 17 991260 636

随机推荐

  • AngularJS ng-repeat 处理空列表情况

    我认为这将是一个很常见的事情 但我找不到如何在 AngularJS 中处理它 假设我有一个事件列表并想用 AngularJS 输出它们 那么这很简单 ul li event title li ul 但是当列表为空时我该如何处理呢 我想要一个
  • 为什么我收到“无法发送 GpuChannelMsg_CreateCommandBuffer”错误?

    我收到以下错误 DevTools listening on ws 127 0 0 1 49722 devtools browser e3cdef84 2a4f 4829 8cb2 4baf45efa446 0903 065243 722 E
  • strcpy() 和字符串数组

    我需要将用户的输入存储到字符串数组中 include
  • Ninject 和 DataContext 处置

    我正在使用 Ninject 从内核检索 DataContext 我想知道 Ninject 是否自动处置 DataContext 或者他如何处理 dispose 行为 根据我自己的经验 我知道处理数据上下文非常重要 并且每当您创建 DataC
  • 使用 R 合并重复列

    我有一个包含 4 列的表 其中第 1 3 列和第 2 4 列代表相同的变量 Codes Description Codes Description xxxxx describes xxxxx zzzzz describes zzzzz yy
  • CreateFile()串行通信问题[重复]

    这个问题在这里已经有答案了 我试图通过 USB 端口 名为 COM15 进行一些串行通信 但出现错误 这是发生错误的代码 HANDLE myPortHandle CreateFile COM15 GENERIC READ GENERIC W
  • 如何获取请求头、远程地址和其他HttpServletRequest特定信息?

    我有一个 JSF 2 0 Web 项目 我的 Web 有一个表单 它必须执行以下操作 获取表单的参数并将其保存在Bean中 完成 从 servlet 获取此信息 远程地址 远程主机 区域设置 内容类型 边界 内容长度 字符编码 将Bean数
  • 当后缀缺失时,编译器选择前缀 ++ - 谁说的?

    当您为用户定义类型定义前缀运算符 并且不提供后缀版本时 编译器 至少在 Visual C 中 将在您的代码调用缺少的 POSTFIX 版本时使用 PREFIX 版本 至少它会给你一个警告 但是 我的问题是 为什么它不给你一个未定义成员函数的
  • 如何处理 groovy 方法中的多个返回类型?

    我需要一种方法 在成功时返回 Id 在失败时返回错误列表 前代码片段 def save def errors if Employee save flush true return Employee id else errors add Ca
  • 在 Silverlight 中显示 ® 符号

    Folks 我正在尝试在我的 silverlight 应用程序中显示 和上标 TM 符号 我想将包含符号的文本保存在 resx 文件中 我尝试过的事情 将任何文档中的 符号复制粘贴到 resx 文件中 符号得到 显示在 resx 文件中 但
  • 获取方括号的内容,避免嵌套括号

    第一次发帖 来自 Google 的长期访客 我正在尝试提取一些方括号的内容 但是我遇到了一些麻烦 我已经让它适用于圆括号 如下所示 但我看不出应该如何修改它以适用于方括号 我本以为在这个例子中用圆形替换方形 反之亦然应该可行 但显然不行 它
  • 使用单个 flatMap() 比使用 map().flatMap() 更好吗?

    我想知道两种平面映射情况之间是否存在显着差异 Case 1 someCollection stream map CollectionElement getAnotherCollection flatMap Collection stream
  • 用户安装软件时自动安装依赖项(.Net)

    我正在使用 Net 3 5 c WPF 构建一个软件 我的软件需要用户安装 Net 3 5 和 Media Player 11 我想构建一个安装程序 在用户安装主软件时自动安装这两个组件 我该如何解决这个问题 该组件 1 Net 3 5 2
  • 如何在 C# 中生成 WSDL 而不发出 http 请求

    问候 我想编写一个单元测试来确保我们的 Web 服务没有更改上次已知发布版本的 WSDL 原因是对 WSDL 中对象的任何更改都会导致使用 Apache Axis 的客户端失败 即使您所做的只是添加一个不需要的属性 因此 如果发生更改 则需
  • 组合两个 def 后扁平化类型

    以下是一个玩具示例 用于演示现实生活中遗留方法的形状怪异和问题的要点 如你看到的anotherFunc 映射结束后personList将类型扩展为 Throwable List Throwable String 这不是预期的返回类型 而是效
  • 什么是 deep_ping [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我不确定这是否是提问的正确论坛 但我也不知道在哪里提问 所以这是我的问题 深平 是什么意思 我尝试了谷歌 但仍然没有得到任何有关它的信息 另外 深度
  • DataTemplate 中的 TextBlock 忽略了 FontSize 样式

    TextBlock 的样式 如下 对 DataTemplate 的 TextBlock 没有影响 如果我在样式和模板中将 TextBlock 更改为 TextBox 则样式将按我的预期应用 为什么 TextBlock 会忽略样式 谢谢你 B
  • Android 撰写文本的自动链接

    有什么办法可以使用吗安卓 自动链接JetPack Compose Text 上的功能 我知道 在一个简单的标签 修饰符中使用此功能可能不是 声明性方式 但也许有一些简单的方法 对于文本样式我可以使用这种方式 val apiString An
  • 获取 R 中均值子组的均值

    我是 R 的新手 我不知道如何让 R 计算子组的平均值 而子组本身就是子组的平均值 我会解释得更清楚 我有一个像这样的数据框 GROUP WORD WLN 1 1 4 1 1 3 1 1 3 1 2 2 1 2 2 1 2 3 2 3 1
  • Python在同一个图上并排箱线图

    我正在尝试在 Python 2 7 中为下面 Pandas 数据框中 E 列中的每个分类值生成一个箱线图 A B C D E 0 0 647366 0 317832 0 875353 0 993592 1 1 0 504790 0 0418