如何使用 barplot 绘制辅助 y 轴?

2023-12-27

我正在尝试绘制数据(见下文)。公司名称位于 x 轴,status_mission_2_y 位于 y 轴,百分比位于另一个 y 轴。我尝试过使用 twinx() 函数,但无法让它工作。

def twinplot(data):
    x_ = data.columns[0]
    y_ = data.columns[1]
    y_2 = data.columns[2]
    
    data1 = data[[x_, y_]]
    data2 = data[[x_, y_2]]
    plt.figure(figsize=(15, 8))
    ax = sns.barplot(x=x_, y=y_, data=data1)
    
    ax2 = ax.twinx()
    g2 = sns.barplot(x=x_, y=y_2, data=data2, ax=ax2)
    plt.show()


data = ten_company_missions_failed
twinplot(data)
company_name percentage status_mission_2_y
EER 1 1
Ghot 1 1
Trv 1 1
Sandia 1 1
Test 1 1
US Navy 0.823529412 17
Zed 0.8 5
Gov 0.75 4
Knight 0.666666667 3
Had 0.666666667 3

Seaborn 使用相同的颜色并在相同的 x 位置上绘制两个条形图。

以下示例代码调整条形宽度,条形属于ax移至左侧。还有酒吧ax2移至右侧。为了区分右侧的条形,使用半透明 (alpha=0.7)并使用孵化。

import matplotlib.pyplot as plt
from matplotlib.ticker import PercentFormatter
import pandas as pd
import seaborn as sns
from io import StringIO

data_str = '''company_name  percentage  status_mission_2_y
EER 1   1
Ghot    1   1
Trv 1   1
Sandia  1   1
Test    1   1
"US Navy"   0.823529412 17
Zed 0.8 5
Gov 0.75    4
Knight  0.666666667 3
Had 0.666666667 3'''
data = pd.read_csv(StringIO(data_str), delim_whitespace=True)

x_ = data.columns[0]
y_ = data.columns[1]
y_2 = data.columns[2]

data1 = data[[x_, y_]]
data2 = data[[x_, y_2]]
plt.figure(figsize=(15, 8))
ax = sns.barplot(x=x_, y=y_, data=data1)
width_scale = 0.45
for bar in ax.containers[0]:
    bar.set_width(bar.get_width() * width_scale)
ax.yaxis.set_major_formatter(PercentFormatter(1))

ax2 = ax.twinx()
sns.barplot(x=x_, y=y_2, data=data2, alpha=0.7, hatch='xx', ax=ax2)
for bar in ax2.containers[0]:
    x = bar.get_x()
    w = bar.get_width()
    bar.set_x(x + w * (1- width_scale))
    bar.set_width(w * width_scale)

plt.show()

一个更简单的选择可能是结合barplot on ax and a lineplot on ax2.

plt.figure(figsize=(15, 8))
ax = sns.barplot(x=x_, y=y_, data=data1)
ax.yaxis.set_major_formatter(PercentFormatter(1))

ax2 = ax.twinx()
sns.lineplot(x=x_, y=y_2, data=data2, marker='o', color='crimson', lw=3, ax=ax2)

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

如何使用 barplot 绘制辅助 y 轴? 的相关文章

随机推荐

  • 如何在 ASP.NET MVC 3 (Razor) 中将值从视图传递到控制器?

    我在数据库中有这张表 https i stack imgur com C7CWX png https i stack imgur com C7CWX png 我通过此代码 视图 显示 音乐 中的所有值 无需重复 foreach var it
  • 从 pyqt4 中的 QTableView 复制/粘贴多个项目?

    We can select multiple items partial rows and partial columns from QTableView using self tableView setSelectionMode QAbs
  • Android Lint 限制语言以检查缺失的翻译

    我的应用程序仅支持 2 种语言 英语和德语 所以我有这样的语言字符串文件夹结构 myproject res values strings xml myproject res values de strings xml 当我运行 Lint 检
  • 为 multipart/form-data 添加 JSON 消息转换器

    在我的 Spring MVC 服务器中 我希望接收包含文件 图像 和一些 JSON 元数据的多部分 表单数据请求 我可以构建一个格式良好的多部分请求 其中 JSON 部分具有Content Type application json Spr
  • 仅日期无法映射 SQL Server 2019

    我正在尝试使用 c 的新 DateOnly 方面 但是当我进行迁移时 我遇到了以下问题 我正在使用 SQL Server 2019 错误是 无法映射 Amenitie StartDate 因为它的类型为 DateOnly 该类型不是受支持的
  • HBASE 行前缀在 hbase 中按相反顺序扫描

    我有一个以下形式的行键
  • 如何更新 MKPinAnnotationView 上的信息?

    我过去有一些使用经验MKMapView and MKPointAnnotation 我用来在地图上放置一些图钉 这次我尝试更进一步并使用MKPinAnnotationView 与一些引脚一起写入标签 不幸的是 它并没有完全按照我的预期工作
  • 如何通过模态编辑mysql中的数据

    我的这段代码一直有错误 我是引导程序和使用模式的新手 我曾经为所有 花哨 表单使用子表单 但现在我正在转向模态表单 这是我获取模态的代码
  • gitcherry pick时如何更新时间

    我理解正确吗 当cherry pick一个提交时 提交哈希ID和提交日期将会改变 但是AuthorDate与之前的提交保持相同 如果 1 为真 我该如何更新AuthorDate樱桃什么时候也摘 是的 新的提交是new提交 因此它必然具有不同
  • 如何将从 url 检索到的图像存储在 SQLite 数据库中?

    我正在从 url 检索图像 是否可以将图像存储在 SQLite 数据库中 而不是缓存图像 Simple Constructor saving the parent context public ImageAdapter Context c
  • Bootstrap Datetimepicker 更改事件未触发

    Bootstrap Datetimepicker 更改事件不会无错误地触发 有什么线索吗 https github com Eonasdan bootstrap datetimepicker blob master docs Events
  • iOS:我如何接收 HTTP 401 而不是 -1012 NSURLErrorUserCancelledAuthentication

    我遇到了与下面链接中描述的问题类似的问题 NSHTTPURLResponse statusCode 在本应为 401 时返回零 https stackoverflow com questions 2188099 nshttpurlrespo
  • (IBAction)按钮来标记输出

    你好 我是 iphone SDK 对象 C 编程的新手 我想问的问题是 我如何运行一个带有 2 个按钮 递增 1 和递减 2 的程序以在标签中显示结果 每次我单击 增量1 或 减量1 时 结果都会发生变化 抱歉 我对对象 C 编程非常陌生
  • 相同的颜色在 SpriteView 和 SceneView 中呈现不同的效果

    出于性能原因 我必须在 macOS 项目中从 SceneView 切换到 SpriteView 显示超过 63 个场景无法使用 SceneView 但可以使用 SpriteView 但现在我面临一个问题 SpriteView 渲染颜色与 S
  • .NET 将类解析为错误的 DLL

    我的 C 项目引用了两个第三方 DLL 这很重要 因为这意味着我无法访问源代码 也无法修改或重新编译这两个 DLL 我们称它们为 dll A 和 dll B dll A 如下所示 namespace ThirdParty Foo publi
  • 如何使用 ASM 4.0 修改 Java 字节码

    我是 ASM 框架的新手 我已经围绕这个 ASM 框架工作了一个星期 我在网上看到了有关解析类和从头开始生成 class 文件的教程 但我无法理解如何修改 ASM 中的现有类 我无法跟踪之间的执行流程ClassVisitor ClassWr
  • 即使刷新后也保留文本框值

    我想即使在刷新页面之后也保留文本框值 而不是成功提交 使用 cookie 或使用 php 会话 这是下面的代码 div class block content collapse in div class alert alert succes
  • 将自动换行样式应用于 extjs 图表标签

    我正在研究 extjs 图表 当轴标签有大文本时 图表边缘的文本会被截断 如何自动换行长标签 有什么建议么 这是我的代码 https fiddle sencha com fiddle 15ef https fiddle sencha com
  • 访问标准 Android 设置:SIM 卡的 PIN 码

    这是我的第一个问题 我想知道如何访问 Android 中的标准设置 特别是 SIM 功能 启动时 我的三星 i 9000 仅显示插入 PIN 码的窗口几秒钟 然后消失 因此我想自己开发一个用于主屏幕的小部件 启动标准窗口以插入 PIN 码
  • 如何使用 barplot 绘制辅助 y 轴?

    我正在尝试绘制数据 见下文 公司名称位于 x 轴 status mission 2 y 位于 y 轴 百分比位于另一个 y 轴 我尝试过使用 twinx 函数 但无法让它工作 def twinplot data x data columns