我是靠谱客的博主 迷你草丛,最近开发中收集的这篇文章主要介绍python 并列条形图_使用Python库绘制共享相同y轴的两个水平条形图,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一般来说,如果您显示的两个变量位于不同的单位或具有不同的范围,那么您将需要使用两个具有共享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 并列条形图_使用Python库绘制共享相同y轴的两个水平条形图的全部内容,希望文章能够帮你解决python 并列条形图_使用Python库绘制共享相同y轴的两个水平条形图所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部