如何解决根据指定的排名顺序对子图水平条进行排序
我有一个子图,其中包含需要按特定顺序显示的类别。我正在使用 PowerBI Python 脚本处理视觉对象,因此看起来我无法像 PowerBI 那样自动对数据框进行排序。在我的数据集中,我有fruit_category、rnk、quantity_sold、预测、目标和库存数量。数据集应按 rnk 排序,因为它指定了 Fruit_category 的排序顺序。但是,我尝试做
dataset = dataset.sort_values('rnk',ascending=True)
但它不起作用。我的猜测是 PBI 不允许我这样做。图表如下:
这是我的代码:
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
height1 = 0.3
height2 = 0.8
qtysold = dataset.Quantity_Sold
forecast = dataset.Forecast
goals = dataset.Goal
stockqty = dataset.Stock_Quantity
fruitcat = dataset.fruit_category
sortorder = dataset.rnk
numfruitcat = len(fruitcat)
dataset = dataset.sort_values('rnk',ascending=True)
qgoals = [goals]
goal_names = ['']
fig,plts = plt.subplots(numfruitcat,1,figsize=(15,7),dpi=500,sharex=True) # size 15x7
fig.subplots_adjust(hspace=0.9)
for goalidx in range(0,numfruitcat):
idx = len(fruitcat)-1 - goalidx # reverse order because of how subplot numbers them
plts[goalidx].barh(fruitcat[idx],goals*0.0025,color='k',height=5,left=goals[idx])
plts[goalidx].barh(fruitcat[idx],forecast[idx],color=(0.627,0.627,0.3),height=3)
plts[goalidx].barh(fruitcat[idx],stockqty[idx],color=(0.682,0.561,0.624,0.2),qtysold[idx],color=(0.851,0.455,1),height=2)
plts[goalidx].text(qtysold[idx],'{:,}'.format(qtysold[idx]))
plts[goalidx].text(forecast[idx],}'.format(forecast[idx]))
plts[goalidx].text(stockqty[idx],}'.format(stockqty[idx]))
for count,qtr in enumerate(qgoals):
plts[goalidx].text(qtr[idx],3.2,'{}\n{:,}'.format(goal_names[count],qtr[idx]),horizontalalignment='left',verticalalignment='top',fontsize=10)
plts[goalidx].axis([0,max(stockqty)+100,-1,1])
plt.legend()
sns.despine(right=True)
sns.set_theme(style="white")
plt.show()
如何轻松地根据 rnk 对水果进行分类?奖金问题,我试图避免我的价值标签重叠。有没有办法避免使它们重叠?例如Mango的预测数和目标数非常接近,所以它们是重叠的。谢谢!!
解决方法
您在分配值后对数据集进行排序,请在此之前进行。
dataset = dataset.sort_values('rnk',ascending=True)
qtysold = dataset.Quantity_Sold
forecast = dataset.Forecast
goals = dataset.Goal
stockqty = dataset.Stock_Quantity
fruitcat = dataset.fruit_category
sortorder = dataset.rnk
numfruitcat = len(fruitcat)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。