我想绘制两个共享相同y轴的水平条形图.例如,以下问题显示了如何在R中实现此目的:

Two horizontal bar charts with shared axis in ggplot2 (similar to population pyramid)

如何用Python创建类似的情节?

上面问题的情节如下:

以下是上图中使用的状态列表(y轴):

["AK","TX","CA","MT","NM","AZ","NV","CO","OR","WY","MI","MN","UT","ID","KS","NE","SD","WA","ND","OK"]

以下是每个州的销售人员数量列表:

[20,30,40,10,15,35,18,25,22,7,12,3,4,5,8,14,28,24,32]

销售数字可以是随机的.

解决方法

一般来说,如果您显示的两个变量位于不同的单位或具有不同的范围,那么您将需要使用两个具有共享y轴的子图.这类似于@regdoug的答案,但最好明确地共享y轴以确保数据保持对齐(例如,尝试使用此示例进行缩放/平移).

例如:

import matplotlib.pyplot as plt

y = range(20)
x1 = range(20)
x2 = range(0,200,10)

fig,axes = plt.subplots(ncols=2,sharey=True)
axes[0].barh(y,x1,align='center',color='gray')
axes[1].barh(y,x2,color='gray')
axes[0].invert_xaxis()
plt.show()

如果你想更精确地重现你链接到的问题中显示的例子(我将离开灰色背景和白色网格,但如果你喜欢它们,那么很容易添加):

import numpy as np
import matplotlib.pyplot as plt

# Data
states = ["AK","OK"]
staff = np.array([20,32])
sales = staff * (20 + 10 * np.random.random(staff.size))

# Sort by number of sales staff
idx = staff.argsort()
states,staff,sales = [np.take(x,idx) for x in [states,sales]]

y = np.arange(sales.size)

fig,color='gray',zorder=10)
axes[0].set(title='Number of sales staff')
axes[1].barh(y,sales,zorder=10)
axes[1].set(title='Sales (x $1000)')

axes[0].invert_xaxis()
axes[0].set(yticks=y,yticklabels=states)
axes[0].yaxis.tick_right()

for ax in axes.flat:
    ax.margins(0.03)
    ax.grid(True)

fig.tight_layout()
fig.subplots_adjust(wspace=0.09)
plt.show()

一个警告.我没有真正正确对齐y-tick-labels.有可能做到这一点,但它比你想象的更痛苦.因此,如果你真的想要y-tick-labels总是完美地居中于图的中间,那么最简单的方法是以不同的方式绘制它们.而不是axis [0] .set(yticks = y,yticklabels = states),你会做类似的事情:

axes[0].set(yticks=y,yticklabels=[])
for yloc,state in zip(y,states):
    axes[0].annotate(state,(0.5,yloc),xycoords=('figure fraction','data'),ha='center',va='center')

使用Python库绘制共享相同y轴的两个水平条形图的更多相关文章

  1. yii2 gridview没有使用hasMany retionship显示所有左连接值

    型号搜索:型号:我需要结果当我使用gridview时,我得到了以下结果请提供解决方案来解决此问题.你所看到的是预期的行为:通常你不希望你的ActiveRecord查询包含重复的主记录,所以Yii过滤掉由JOIN引起的任何重复.您可以在此处看到此行为:https://github.com/yiisoft/yii2/blob/master/framework/db/ActiveQuery.php#L2

  2. Angular 4错误:类型'()=> any’中缺少属性’includes’

    我在使用angular4和observable时遇到错误./Users//backend/src/app/app.component.ts(15,55):输入'()=>任何’不能分配给’State[]’./Users//backend/src/app/app.component.ts(15,55):输入'()=>任何’不能分配给’State[]’.‘()=>类型中缺少属性’includes’任何’

  3. AngularJS:$q等待所有即使1拒绝

    我一直在试图等待几个承诺与Angular的$q,但似乎没有选择“等待所有即使promis被拒绝”。我想等待第五个承诺完成。好的,我自己实现了一个基本的版本。

  4. 在Javascript中返回一个字符串

    稍后它将返回公司等:解决方法最简单的方法是制作哈希–不需要任何功能.编辑现在我更好地理解getState()需要从服务器检索状态名称.这使您进入异步编码的世界,这与正常的同步编码完全不同.要实现的最重要的事情是getState()不能简单地返回给定状态缩写的状态名称.为什么?

  5. javascript – Twitter Bootstrap Typeahead部队选择

    我在我的应用程序中使用BootstrapTypeahead插件,这是我的代码.我正在寻找一种方法来验证用户的选择.结果必须匹配.我到处搜索,找不到东西.非常感谢您的帮助.解决方法如果提取出数据,状态和映射,则可以在.blur函数中使用它们进行查找:

  6. java – 如何测试Map中的布尔值?

    我是java的新手,所以请放轻松我.我有一个hashmap,其中包含String键和布尔值,如下所示.我从一个函数返回.一旦我在其他地方得到这个,我希望能够在其中一个上调用if语句来查看它的真或假.但java一直告诉我,我需要这是一个布尔类型,它是一个Map类型.我怎么能这么容易做到?

  7. 如何制作更平滑的Perlin噪音发生器?

    我正在尝试使用Perlin噪声发生器来制作地图的瓷砖,但我注意到我的噪音太尖锐了,我的意思是,它有太多的高度,没有平坦的地方,而且它们看起来不像山,岛屿,湖泊或任何东西;它们似乎太随意而且有很多峰值.在问题的最后,需要进行修改才能修复它.该问题的重要代码是:1D:2D:我在代码中留下了1D和2DPerlin噪音,因为可能有人对此感兴趣:(我花了很长时间才找到一些代码,所以我觉得有人会很高兴在这里找

  8. 使用Python库绘制共享相同y轴的两个水平条形图

    我想绘制两个共享相同y轴的水平条形图.例如,以下问题显示了如何在R中实现此目的:Twohorizontalbarchartswithsharedaxisinggplot2(similartopopulationpyramid)如何用Python创建类似的情节?上面问题的情节如下:以下是上图中使用的状态列表(y轴):以下是每个州的销售人员数量列表:销售数字可以是随机的.解决方法一般来说,如果您显示的

  9. 如何更好地光栅化绘图而不会模糊matplotlib中的标签?

    我通常使用ax.set_rasterized来栅格化图形,以便在以eps格式保存时可以处理透明度,但光栅化也会模糊轴标签和刻度标签,所以有没有办法仅在轴内光栅化贴片而不是比整个数字?或者是否更好地导出具有透明度的eps格式?

  10. Python Matplotlib线图与轮廓/ imshow对齐

    如何使用Python和Matplotlib设置一个子图的视觉宽度等于另一个子图的宽度?

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部