为了账号安全,请及时绑定邮箱和手机立即绑定

Python中的Matplotlib分组数据聚类条形图

Python中的Matplotlib分组数据聚类条形图

慕标5832272 2023-10-31 14:30:54
我有一个值字典 ( drug) 如下:{0: {0: 100.0, 1: 0.41249706379061035, 2: 5.144449764434768, 3: 31.078456871927678}, 1: {0: 100.0, 1: 0.6688801420346955, 2: 77.32360971119694, 3: 78.15132480853421}, 2: {0: 100.0, 1: 136.01949766418852, 2: 163.4967732211563, 3: 146.7726208999281}}它包含 3 种药物类型,然后该药物类型在 4 种不同浓度下的功效。我正在尝试制作一个簇状条形图,将 3 种药物相互进行比较,如下所示:https://i.stack.imgur.com/wKIRs.png 目前,我的代码如下:fig, ax = plt.subplots()width = 0.35ind = np.arange(3)for x in range(3):    ax.bar(ind + (width * x), drug[x].values(), width, bottom=0)ax.set_title('Drug efficacy')ax.set_xticks(ind + width / 2)ax.set_xticklabels(list(string.ascii_uppercase[0:drugCount]))ax.autoscale_view()plt.show()我已经改编了本指南中的代码,但遇到了多个问题。我认为主要原因是示例中使用的数据使得一组中的值对应于相同的颜色而不是相同的簇。我如何调整此代码,以便与其他药物相比,能够单独绘制每种药物在 4 种不同浓度下的功效?
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

IIUC 您想按列标准化您的值,可以使用以下命令来完成sklearn:


from sklearn import preprocessing


df = pd.DataFrame(drug)

scaler = preprocessing.MinMaxScaler()

df = pd.DataFrame(scaler.fit_transform(df))

df.T.plot(kind="bar")

plt.show()

https://img1.sycdn.imooc.com/65409f440001fa1d05950416.jpg

查看完整回答
反对 回复 2023-10-31
  • 1 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信