Python pandas 绘制如果孪生两个 y 轴则移动 x 轴

2024-01-16

我有一个包含 3 列的数据框:其中一列是“groupby”列,另外两列是带有值的“普通”列。我还想生成箱线图和条形图。在条形图上,我想可视化每个组元素出现的次数。让我的示例代码更详细地告诉这个数据框:

li_str = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten']

df = pd.DataFrame([[i]+j[k] for i,j in {li_str[i]:np.random.randn(j, 2).tolist() for i,j in \
    enumerate(np.random.randint(5, 15, len(li_str)))}.items() for k in range(len(j))]
    , columns=['A', 'B', 'C'])

所以上面我为每个元素生成随机数的随机值li_str我为专栏做这件事Band C.

然后我只可视化一个箱线图:

fig, ax = plt.subplots(figsize=(16,6))
p1 = df.boxplot(ax=ax, column='B', by='A', sym='')

My result is: enter image description here

现在我可视化每个组的元素数量(因此我上面生成的随机数np.random.randint(5, 15, len(li_str)) code):

fig, ax = plt.subplots(figsize=(16,6))

df_gb = df.groupby('A').count()

p2 = df_gb['B'].plot(ax=ax, kind='bar', figsize=(16,6), colormap='Set2', alpha=0.3)
plt.ylim([0, 20])

My result is: enter image description here

现在我想要将这两个图合而为一:

fig, ax = plt.subplots(figsize=(16,6))
ax2 = ax.twinx()

df_gb = df.groupby('A').count()

p1 = df.boxplot(ax=ax, column='B', by='A', sym='')
p2 = df_gb['B'].plot(ax=ax2, kind='bar', figsize=(16,6)
    , colormap='Set2', alpha=0.3, secondary_y=True)
plt.ylim([0, 20])

My result is: enter image description here

有谁知道为什么我的箱线图向右移动一个 x 轴刻度?我使用Python 3.5.1,pandas 0.17.0,matplotlib 1.4.3

谢谢你!!!


这是因为即使标签相同,箱线图和条形图也不使用相同的 xticks。

df.boxplot(column='B', by='A')
plt.xticks()

(array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10]), <a list of 10 Text xticklabel objects>)

df.groupby('A').count()['B'].plot(kind='bar')
plt.xticks()

(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), <a list of 10 Text xticklabel objects>)

乍一看,它看起来像是一个不一致的地方,应该在 matplotlib 中修复boxplot(),但我可能只是忽略了其基本原理。

作为解决方法,使用 matplotlibbar(),这允许您指定 xticks 以匹配箱线图的 xticks (我没有找到一种方法来做到这一点df.plot(kind='bar').

df.boxplot(column='B', by='A')
plt.twinx()
plt.bar(left=plt.xticks()[0], height=df.groupby('A').count()['B'],
        align='center', alpha=0.3)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python pandas 绘制如果孪生两个 y 轴则移动 x 轴 的相关文章

随机推荐

  • 页面加载时的 JSF 重定向

    简短的问题 是否可以进行重定向 例如当用户未登录时 当呈现页面时 为此你should http java sun com products servlet Filters html use a Filter http java sun co
  • 如何用颜色突出显示浏览器选项卡

    我有一个聊天 Web 应用程序 我需要一项功能 其中如果特定用户在浏览器窗口中打开了多个选项卡 并且聊天选项卡不是活动选项卡 那么如果他从另一端收到 ping 则聊天选项卡应该自动突出显示以吸引用户注意力 我打算用 jQuery 来做这件事
  • 高调的 MonoTouch 应用程序? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想要一些使用 MonoTouch 创建的高调应用程序的示例 您打电话回家的应用程序 进入所属类别前 25 名的应用程序 我在哪里可以找到此类应用程序
  • 如何在 Debian postinst 脚本中获取新安装的版本?

    Per the Debian 政策手册 http www debian org doc debian policy ch maintainerscripts html 我的 postinst 脚本在升级和配置时被调用 如 postinst
  • Hibernate Validator - 添加动态 ConstraintValidator

    了解后Hibernate 自定义验证器 https docs jboss org hibernate validator 4 0 1 reference en html validator customconstraints html 它让
  • 无法使用 GAE/J DataNucleus 插件版本 2.1.2 获取新创建的 JDO 持久实体的 ID

    我的问题 我正在使用新的 1 7 5 GAE J SDK 将我的应用程序从 GAE J 的 DataNucleus 插件版本 1 x 移植到 2 0 这将我的 JDO 版本从 2 3 更改为 3 0 1 我的持久实体类有一个编码字符串类型的
  • Javascript - 将 INI 文件解析为嵌套关联数组

    我是 Javascript 新手 在将 INI 格式的文件解析为嵌套对象时遇到问题 我的文件格式如下 ford car focus transmission standard ford car focus engine four cylin
  • 依赖注入带来的性能问题

    在我的探查器报告中 我越来越多地看到使用依赖项注入进行基于模拟的测试的结果 许多依赖项是静态的 但因为我们想要单独测试方法 所以它们被更改为实例成员 如下例所示 class ShortLivedThing IDependency1 dep1
  • 如何在Java中反转System.loadLibrary

    我正在编写一个 JNI 程序 我想在使用完该 dll 后卸载它 为此我可以做什么 我找不到unloadLibrary Javadoc 中的方法 没有直接的方法可以手动卸载 dll 简而言之 当垃圾收集器处理加载 jni dll 的类的 Cl
  • ajax post 工作与 angularjs $http 不适用于 ASP.NET MVC 4

    我有两个项目客户端和服务器端 客户端项目是纯htmljs 服务器端是 ASP NET MVC 4 和 Web Api 因为有两个项目我需要启用CROS功能 我添加到服务器的网络配置
  • 如何从 Osmdroid 地图上删除标记

    我正在创建一个 Android 应用程序 我需要在地图上设置标记 由于我的应用程序需要离线功能 我需要使用 Osmdroid 来解决这个问题 现在我的问题是地图上的标记 我可以使用标记或 ItemizedOverlay 轻松添加它们 但我遇
  • 我的 Eclipse 计时器无法正常工作

    我是 Eclipse 新手 我的 Eclipse 计时器无法正常工作 这是我的 java util Timer 定时器中的代码 Button countDownButton2 Button findViewById R id countDo
  • 在c#中执行powershell脚本

    下面是我用来尝试执行 powershell 脚本的脚本 但每当我运行它时 我只会得到一个空白的命令窗口 C Code static void Main string args string text System IO File ReadA
  • 如何在 Mac OS 10.6+ 中使用 obj-c 切换到登录窗口

    我有一个应用程序 我需要以类似于此应用程序的方式切换到登录窗口 http itunes apple com us app lock me now id464265594 mt 12 http itunes apple com us app
  • 忽略 Mac OS X 中 xargs 的空结果

    我的网站的代码使用这段代码在服务器 Ubuntu 上自动部署 cmd cd checkout dir svn command st awk print 2 grep v deploy tac xargs r svn command reve
  • 如果文件夹不存在,如何创建文件和文件夹?

    想象一下我希望创建 或覆盖 以下文件 C Temp Bar Foo Test txt 使用文件 创建 http msdn microsoft com en us library d62kzs03 aspx方法 这样就可以了 但是 如果我没有
  • Jsch 和 Maven 出了什么问题?

    我尝试将 Jsch 0 1 44 与 Maven 一起使用 我的 pom xml 中有以下依赖项
  • FrameLayout 中的 Android 中心视图不起作用

    我有一个 FrameLayout 其中有 2 个控件 自定义视图 在其上绘制图像和一些文本 带有文本的文本视图 我想将两者都集中在 FrameLayout 中 但我无法做到这一点 Texview 居中得很好 当我使其可见时 我的自定义视图仍
  • 在 AWS Sagemaker pytorch-1.10-cpu-py38 应用程序上使用 htop 出现段错误

    我正在尝试在 Pytorch 1 10 Python 3 8 CPU 优化的 AWS Sagemaker 容器中启动 htop 命令 这在我迄今为止使用过的其他图像中工作得很好 但在这一个图像中 该命令因段错误而失败 htop htop o
  • Python pandas 绘制如果孪生两个 y 轴则移动 x 轴

    我有一个包含 3 列的数据框 其中一列是 groupby 列 另外两列是带有值的 普通 列 我还想生成箱线图和条形图 在条形图上 我想可视化每个组元素出现的次数 让我的示例代码更详细地告诉这个数据框 li str one two three