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

我有一个值字典 ( 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.35

ind = 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 种不同浓度下的功效?


慕标5832272
浏览 108回答 1
1回答

侃侃尔雅

IIUC 您想按列标准化您的值,可以使用以下命令来完成sklearn:from sklearn import preprocessingdf = pd.DataFrame(drug)scaler = preprocessing.MinMaxScaler()df = pd.DataFrame(scaler.fit_transform(df))df.T.plot(kind="bar")plt.show()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python