具有 2 个 y 轴的 Seaborn 箱线图

2023-11-29

如何创建具有 2 个 y 轴的 seaborn 箱线图?由于规模不同,我需要这个。我当前的代码将覆盖箱线图中的第一个框,例如。它由第一个轴的第一个数据项和第二个轴的第一个数据项填充。

import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns

df = pd.DataFrame({'A': pd.Series(np.random.uniform(0,1,size=10)),
                   'B': pd.Series(np.random.uniform(10,20,size=10)),
                   'C': pd.Series(np.random.uniform(10,20,size=10))})

fig = plt.figure()
# 2/3 of  A4
fig.set_size_inches(7.8, 5.51)

plt.ylim(0.0, 1.1)

ax1 = fig.add_subplot(111)

ax1 = sns.boxplot(ax=ax1, data=df[['A']])

ax2 = ax1.twinx()

boxplot = sns.boxplot(ax=ax2, data=df[['B','C']])

fig = boxplot.get_figure()
fig

enter image description here

如何防止第一项被覆盖?

EDIT:

如果我添加位置参数

boxplot = sns.boxplot(ax=ax2, data=df[['B','C']], positions=[2,3])

我得到一个例外:

TypeError: boxplot() got multiple values for keyword argument 'positions'

可能是因为seaborn已经在内部设定了这个论点。


在这里使用seaborn可能没有太大意义。使用通常的 matplotlib 箱线图可以让你使用positions论证如预期。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')

df = pd.DataFrame({'A': pd.Series(np.random.uniform(0,1,size=10)),
                   'B': pd.Series(np.random.uniform(10,20,size=10)),
                   'C': pd.Series(np.random.uniform(10,20,size=10))})

fig, ax1  = plt.subplots(figsize=(7.8, 5.51))

props = dict(widths=0.7,patch_artist=True, medianprops=dict(color="gold"))
box1=ax1.boxplot(df['A'].values, positions=[0], **props)

ax2 = ax1.twinx()
box2=ax2.boxplot(df[['B','C']].values,positions=[1,2], **props)

ax1.set_xlim(-0.5,2.5)
ax1.set_xticks(range(len(df.columns)))
ax1.set_xticklabels(df.columns)

for b in box1["boxes"]+box2["boxes"]:
    b.set_facecolor(next(ax1._get_lines.prop_cycler)["color"])
plt.show()

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有 2 个 y 轴的 Seaborn 箱线图 的相关文章

随机推荐

  • Gatttool非交互模式--char-write

    仍在询问 BLE 设备和gatttool 我可以在交互模式下发送 char write cmd 但无法在非交互模式下执行相同的操作 这是我以交互模式发送的内容 gatttool I gt connect BTADDR BTADDR gt c
  • 自动化 Team Foundation Build 配置

    我目前正在寻找一种无需使用配置向导即可配置 Team Foundation Build 服务 一个构建代理的方法 有没有办法做到这一点 无论是通过命令行 我还没有找到 TFS Build 的任何命令行安装选项 还是通过 API Thanks
  • 如何使用WebRTC将视频流传输到RTMP?

    我正在尝试构建一项服务 将您的屏幕从浏览器流式传输到客户端 例如抽搐 我所完成的是我用 rtmp 构建了一个工作的 nginx 服务器 我使用 OBS 对其进行了测试 这效果很好 我的问题是如何使用 WebRTC 将屏幕从浏览器 不是来自
  • 将向量的每个元素与第二个向量的每个元素相加

    我有两个向量 我想要一个矩阵 其元素是向量 1 的每个元素和向量 2 的每个元素的总和 例如 该矩阵第一行的第一个元素是向量1的第一个元素和向量2的第一个元素的和 第一行的第二个元素是向量 1 的第一个元素与向量 2 的第二个元素之和 依此
  • 查看同一个表中的另一条记录时将 SQL 子查询转换为联接 Access 2010

    我读过联接比子查询更有效 我有一个查询非常慢并且使用大量子查询 因此我想改进它但不知道如何改进 我有以下表格 People this table stores lists of individual people with the foll
  • adb devices 命令和 eclipse 无法识别我的索尼爱立信 xperia x10

    我使用的是Windows XP adb devices 命令不显示我的 xperia x10 和 eclipse 无法识别我的 xperia x10 我有 htc magic 效果很好 我从以下位置下载了驱动程序 http develope
  • Google Chart vAxis 值未显示

    我正在处理各种图表 并在单个页面中显示多个图表 不知何故 vAxis 值没有显示在某些图表上 但它显示在一些独立的图表中 我们可以说它在不同的部分并手动触发 我已经尝试了我能尝试的一切 var data google visualizati
  • 错误:ORA-01704:字符串文字太长

    当我尝试在具有数据类型的字段上设置超过 4000 个字符的值时CLOB 它给了我这个错误 ORA 01704 字符串文字太长 任何建议 如果我必须设置无限字符的值 哪种数据类型将适用于我 尽管对于我的情况来说 它恰好是关于15000 cha
  • IE8中的settimeout问题

    我在 IE8 中使用 javascript setTimeout 函数时遇到一个奇怪的问题 我想像这样使用 setTimeout 函数 setTimeout timeout 2000 name saarthak function timeo
  • Domino 中的身份验证和 Web 服务?

    有没有办法允许在 Domino Web 服务中进行身份验证 如果是这样 我该怎么做 IBM 有一个例子here 有other options
  • 自定义类中没有实体管理器和 ContextErrorException

    我正在尝试在 Sonata Admin 中创建自定义表单 我想将数据从数据库获取到选择框 当我尝试通过 getEntityManager 获取数据时出现错误 No entity manager defined for class Admin
  • “a”在 JVM 指令(如“a load”或“a return”)中意味着什么?

    a 在 JVM 指令 如 a load 或 a return 中意味着什么 我知道它们对引用进行操作 但为什么它们被命名为 aload astore 等而不是 reload restore 等 我相信历史上 a 代表 地址 因为对象引用只是
  • 设置作为参数传递的 TypeScript 对象的默认值

    function sayName params firstName string lastName string params lastName params lastName smith lt lt any better alternat
  • .Net Core 将连接字符串传递给 DBContext 类

    刚刚开始使用 Net Core 并面临将连接字符串信息传递到 Context 控制台项目 我有 4 个项目 都是使用 Net Core 创建的 MVC 服务层 领域层 数据层 在 MVC 项目中 我有 Startup cs 文件 我正在其中
  • Rdf 重复三元组

    我有一个关于 RDF 和重复三元组 的问题 通过仔细阅读互联网 似乎重复的三元组在某种程度上是 不好的 或违反了某些规则 但从表面上看 重复的三元组在我看来是有意义的 假设我想表达这样一个事实 Susy 主语 提到 谓语 Bob 宾语 假设
  • 游戏中心好友列表

    All 我为 Apple iOS 制作了一款游戏 现在我想在苹果游戏中心显示我的好友列表 如何在 iPhone 上显示登录玩家的 Game Center 好友列表 可能使用 UIViewController 管理 ViewControlle
  • 如何在堆叠栏中显示每个日期范围的多个堆叠列

    本质上 目的是比较团队中每个成员每周执行的任务类别 我想在轴下方添加周数而不是 1 0 2 0 和 3 0 我得到了错误的结果 因为它仅显示 1 表示优秀 并且所有周 1 周 2 周 3 周 4 我选择开始日期为 1 12 2014 结束日
  • 获取传单中图层中的标记数

    我有一个 Leaflet 地图 其中有一个名为 flickrpics 的图层 该图层根据当前地图视图的 bbox 在 geojson 中动态加载 我想获得该图层中标记数量的简单计数 以便可以将其显示在图层控件中的图层标签旁边 我尝试过像 f
  • 语法错误,意外的“ ” (T_STRING)

    为什么我的 PHP 邮件代码总是给出 语法错误 第 4 行 C xampp htdocs GSP members php 中出现意外的 T STRING
  • 具有 2 个 y 轴的 Seaborn 箱线图

    如何创建具有 2 个 y 轴的 seaborn 箱线图 由于规模不同 我需要这个 我当前的代码将覆盖箱线图中的第一个框 例如 它由第一个轴的第一个数据项和第二个轴的第一个数据项填充 import pandas as pd import nu