Python-双y轴图表,对齐零

2024-04-20

我正在尝试创建一个带有双 x 轴的水平条形图。 2 个轴的比例非常不同,一组从 -5 到 15(正值和负值),另一组更像是 100 到 500(所有正值)。

当我绘制此图时,我想对齐两个轴,以便零显示在同一位置,并且只有负值位于其左侧。目前,包含所有正值的集合从最左侧开始,包含正值和负值的集合从整个图的中间开始。

我找到了align_yaxis示例,但我正在努力对齐x轴。Matplotlib 条形图:将两个不同的 y 轴对齐为零 https://stackoverflow.com/questions/35774283/matplotlib-bar-charts-aligning-two-different-y-axes-to-zero

这是我正在使用简单测试数据进行工作的示例。有什么想法/建议吗?谢谢

import pandas as pd
import matplotlib.pyplot as plt

d = {'col1':['Test 1','Test 2','Test 3','Test 4'],'col 2':[1.4,-3,1.3,5],'Col3':[900,750,878,920]}
df = pd.DataFrame(data=d)

fig = plt.figure()  # Create matplotlib figure

ax = fig.add_subplot(111)  # Create matplotlib axes
ax2 = ax.twiny()  # Create another axes that shares the same y-axis as ax.

width = 0.4

df['col 2'].plot(kind='barh', color='darkblue', ax=ax, width=width, position=1,fontsize =4, figsize=(3.0, 5.0))
df['Col3'].plot(kind='barh', color='orange', ax=ax2, width=width, position=0, fontsize =4, figsize=(3.0, 5.0))

ax.set_yticklabels(df.col1)
ax.set_xlabel('Positive and Neg',color='darkblue')
ax2.set_xlabel('Positive Only',color='orange')

ax.invert_yaxis()
plt.show()

我点击了一个问题的链接,最终得到了这个答案:https://stackoverflow.com/a/10482477/5907969 https://stackoverflow.com/a/10482477/5907969

答案有一个对齐 y 轴的函数,我已对其进行了修改以对齐 x 轴,如下所示:

def align_xaxis(ax1, v1, ax2, v2):
    """adjust ax2 xlimit so that v2 in ax2 is aligned to v1 in ax1"""
    x1, _ = ax1.transData.transform((v1, 0))
    x2, _ = ax2.transData.transform((v2, 0))
    inv = ax2.transData.inverted()
    dx, _ = inv.transform((0, 0)) - inv.transform((x1-x2, 0))
    minx, maxx = ax2.get_xlim()
    ax2.set_xlim(minx+dx, maxx+dx)

然后在代码中使用它,如下所示:

import pandas as pd
import matplotlib.pyplot as plt

d = {'col1':['Test 1','Test 2','Test 3','Test 4'],'col 2' [1.4,-3,1.3,5],'Col3':[900,750,878,920]}
df = pd.DataFrame(data=d)

fig = plt.figure()  # Create matplotlib figure

ax = fig.add_subplot(111)  # Create matplotlib axes
ax2 = ax.twiny()  # Create another axes that shares the same y-axis as ax.

width = 0.4

df['col 2'].plot(kind='barh', color='darkblue', ax=ax, width=width, position=1,fontsize =4, figsize=(3.0, 5.0))
df['Col3'].plot(kind='barh', color='orange', ax=ax2, width=width, position=0, fontsize =4, figsize=(3.0, 5.0))

ax.set_yticklabels(df.col1)
ax.set_xlabel('Positive and Neg',color='darkblue')
ax2.set_xlabel('Positive Only',color='orange')

align_xaxis(ax,0,ax2,0)
ax.invert_yaxis()
plt.show()

This will give you what you're looking for enter image description here

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

Python-双y轴图表,对齐零 的相关文章

随机推荐

  • 根据列条件连接数据框行

    为了后续的讨论 我将参考下面的示例数据框 现在 我希望实现的是将所有相似的数据包时间分组 即所有 7s 12s 等 此外 PacketTime字段应包含最小值和最大值的差异 max PacketTime min PacketTime 以及F
  • Fortran90 数组将空白值读取为 null

    我正在读取外部文本文件的数据 30 行 7 列 每行用 分隔 我缺少表示为 的值 当我将数据读入二维数组时 缺失值被 0 00 替换 但数据中也有 0 00 值 当我计算平均值时 计数 项目数 n 显示为计数 缺失值的数量 我如何动态选择缺
  • 调试断言失败

    我不断遇到这种情况 Debug assertions failed 当我在调试模式下运行程序时出错 我尝试在 Visual C 网站上查找此错误 但这些解释对我来说太先进了 而且它们与我对问题的最佳猜测没有任何相似之处 我已经检查了我的代码
  • 使用 Java 查找句子中的确切单词

    我正在编写一个代码来识别文本中的国家 地区名称 我正在使用一本包含国家名称的字典India America Sri Lanka 我目前正在使用text contains key with key从字典中 然而 即使对于像这样的字符串 这也会
  • 在 C 语言中,stdout 缓冲区的大小是多少?

    今天我了解到 stdout 在设置为终端时是行缓冲的 并且在不同情况下是缓冲的 因此 在正常情况下 如果我使用 printf 而不终止 n 只有当缓冲区已满时 它才会打印在屏幕上 如何获得这个缓冲区的大小 它有多大 实际大小由各个实现定义
  • “SolidBrush”参数类型对于格式化属性“Foreground”无效。参数名称:值

    我尝试在调用方法中更改颜色文本 RichTextBox wpf 但我遇到了一些麻烦 我的麻烦是 SolidBrush 参数类型对于格式化属性 Foreground 无效 参数名称 值 My code MethodInvoker action
  • 如何从 2 个数组创建地图?

    我有一个字符串数组和一个整数数组 如何使用第一个作为键 第二个作为值来创建地图 val keys arrayOf butter milk apples val values arrayOf 5 10 42 val map Map
  • 滚动“返回顶部”链接时显示/隐藏 div

    我无法让我的 转到顶部 id arrow updiv 在打开时消失 例如页面顶部 在页面顶部我得到了 所以我想要arrow up div to visible show slow 当不在页面顶部时 var tmp window height
  • Spring中如何从WebRequest获取请求的URI?

    我正在使用以下方法处理 REST 异常 ControllerAdvice and ResponseEntityExceptionHandler在 Spring Rest Web 服务中 到目前为止 一切都工作正常 直到我决定添加URI路径
  • php 的内容长度标头被覆盖!

    我试图弄清楚为什么 php 的 Content Length 标头被覆盖 这是演示 php 获取标头的请求 curl I http someserver com demo php HTTP 1 1 200 OK Date Tue 19 Ju
  • 如何快速将一个float打包为4个字节?

    我一直在寻找一种在 WebGL 纹理上存储浮动的方法 我找到了一些解决方案 http aras p info blog 2009 07 30 encoding floats to rgba the final 在互联网上 但那些只处理 0
  • 在Angular2中,使用zone.run与changeDecotor.markForCheck()的优点

    我想知道使用其中一种比另一种有什么优点或缺点 constructor private app ApplicationRef private ref ChangeDetectorRef this ref markForCheck OR thi
  • 获取列名,其中值是 pandas 数据框中的内容

    我试图在每个时间戳找到数据帧中的列名称 其值与同一时间戳的时间序列中的列名称相匹配 这是我的数据框 gt gt gt df col5 col4 col3 col2 col1 1979 01 01 00 00 00 1181 220328 9
  • 使用 Tabula 从 PDF 中提取表格

    我遇到了一个名为 Tabula 的很棒的图书馆 它几乎成功了 不幸的是 第一页上有很多无用的区域 我不希望 Tabula 提取这些区域 根据文档 您可以指定要从中提取的页面区域 但是 无用区域仅位于 PDF 文件的第一页 因此 对于所有后续
  • 使用纯 JavaScript 从另一个(php)文件获取 JSON?

    我是 JavaScript 新手 我有一个 php 文件 其中列出了目录中的所有文件 我想调用该文件并仅使用 javascript 获取它回显的 json 数组 我知道 jquery 可以做到 但这是我唯一需要做的事情 它不值得学习 jqu
  • 无法使用 XCode/Obj-C 编译 Cocoapods – “Pods-prefix.pch.dia:没有这样的文件或目录”

    我正在使用 XCode 4 5 1 和 iOS 6 0 基础 SDK 这是我收到的错误 i686 apple darwin11 llvm gcc 4 2 Users fahim Library Developer Xcode Derived
  • 如何使用免费 Monad 的 Church 编码?

    我一直在使用Free数据类型在Control Monad Free来自free包裹 现在我正在尝试将其转换为使用F in Control Monad Free Church但不知道如何映射功能 例如 一个简单的模式匹配函数使用Free看起来
  • 成帧器运动,在 x 动画时延迟旋转 Y

    我正在使用 Framer motion 并且正在尝试找到一种方法来延迟旋转 Y 的动画 同时 x 动画到特定位置然后启动旋转 Y 这在 Framer 运动中可能吗 例子 const variants flip rotateY 0 x 20
  • 将元组列表转换为列表列表 Haskell

    I have m n p q r s 我怎样才能将它转换为 m n p q r s 谁能帮帮我吗 谢谢 编写一个函数将一对转换为列表 pairToList a a gt a pairToList x y x y 那么你只需要map pair
  • Python-双y轴图表,对齐零

    我正在尝试创建一个带有双 x 轴的水平条形图 2 个轴的比例非常不同 一组从 5 到 15 正值和负值 另一组更像是 100 到 500 所有正值 当我绘制此图时 我想对齐两个轴 以便零显示在同一位置 并且只有负值位于其左侧 目前 包含所有