猿问

Matplotlib:如何从列表中给出 xticks 值

我有以下代码:


import matplotlib.pyplot as plt

import numpy as np


xticks = ['A','B','C']

Scores = np.array([[5,7],[4,6],[8,3]])

colors = ['red','blue']

fig, ax = plt.subplots()

ax.hist(Scores,bins=3,density=True,histtype='bar',color=colors)

plt.show()

这给出了以下输出:

我有两个问题:

  1. 我怎样才能让条形的高度代表Scores例如最左边的红色列应该是高度 5 和最左边的蓝色列应该是高度 7,依此类推。

  2. 如何从xticks列表中跨 x 轴分配值,例如左侧两列应在其下方写上“A”,接下来的两个“B”等等。


明月笑刀无情
浏览 172回答 3
3回答

料青山看我应如是

您将直方图与条形图混淆了。在这里你想要一个条形图。如果你想使用熊猫,这将非常容易:import matplotlib.pyplot as pltimport numpy as npimport pandas as pdxticks = ['A','B','C']Scores = np.array([[5,7],[4,6],[8,3]])colors = ['red','blue']names = ["Cat", "Dog"]fig, ax = plt.subplots()pd.DataFrame(Scores, index=xticks, columns=names).plot.bar(color=colors, ax=ax)plt.show()如果单独使用 matplotlib,它会稍微复杂一些,因为每一列都需要独立绘制,import matplotlib.pyplot as pltimport numpy as npxticks = ['A','B','C']Scores = np.array([[5,7],[4,6],[8,3]])colors = ['red','blue']names = ["Cat", "Dog"]fig, ax = plt.subplots()x = np.arange(len(Scores))ax.bar(x-0.2, Scores[:,0], color=colors[0], width=0.4, label=names[0])ax.bar(x+0.2, Scores[:,1], color=colors[1], width=0.4, label=names[1])ax.set(xticks=x, xticklabels=xticks)ax.legend()plt.show()

达令说

plt.xticks(range(0, 6), ('A', 'A', 'B', 'B', 'C', 'C'))我相信会回答问题第 2 部分。我不确定高度,因为我没有制作直方图。
随时随地看视频慕课网APP

相关分类

Python
我要回答