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

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

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

明月笑刀无情 2021-10-19 17:20:46
我有以下代码:import matplotlib.pyplot as pltimport numpy as npxticks = ['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()这给出了以下输出:我有两个问题:我怎样才能让条形的高度代表Scores例如最左边的红色列应该是高度 5 和最左边的蓝色列应该是高度 7,依此类推。如何从xticks列表中跨 x 轴分配值,例如左侧两列应在其下方写上“A”,接下来的两个“B”等等。
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

您将直方图与条形图混淆了。在这里你想要一个条形图。如果你想使用熊猫,这将非常容易:


import matplotlib.pyplot as plt

import numpy as np

import pandas as pd


xticks = ['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()

//img1.sycdn.imooc.com//616e8e120001de1004590277.jpg

如果单独使用 matplotlib,它会稍微复杂一些,因为每一列都需要独立绘制,


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']

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()

//img1.sycdn.imooc.com//616e8e2000015df504420276.jpg

查看完整回答
反对 回复 2021-10-19
?
达令说

TA贡献1821条经验 获得超6个赞

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


查看完整回答
反对 回复 2021-10-19
  • 3 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

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