我有一个数据集,包含:


一周中的日子
每周的每一天都很重要


例如,我的数据集可能是:

{
  "days": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Mon", "Tue", "Wed"],
  "counts": [10, 5, 3, 8, 6, 2, 9, 7, 10, 8]
}


我想使用matplotlib在图表上绘制数据。但是,当我尝试这样做时,matplotlib会根据x轴上的类别自动折叠数据点,而不是顺序显示数据。例如,这是我得到的图形:

python - 在条形图中绘制许多天的数据而没有日期信息-LMLPHP

显然,通过在x轴上重复分类标签,该图已“折叠”。如何防止这种情况发生,并且在不使用任何日期信息的情况下在图表上显示所有内容?我也想将x轴标签保持为“ Mon”,“ Tue”等。

我当前的图形代码为:

import matplotlib.pyplot as plt

data = {
  "days": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Mon", "Tue", "Wed"],
  "counts": [10, 5, 3, 8, 6, 2, 9, 7, 10, 8]
}

plt.bar(data['days'], data['counts'])
plt.show()

最佳答案

您可以将索引的x范围设置为列表。然后将日期设置为xticklabels。此外,您可以使用一天为条形着色以显示重复的结构:

import matplotlib.pyplot as plt

data = {
  "days": ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", "Mon", "Tue", "Wed"],
  "counts": [10, 5, 3, 8, 6, 2, 9, 7, 10, 8]
}
x = range(len(data['days']))
cmap = plt.cm.plasma
colors = [cmap((xi % 7) / 10 ) for xi in x]
plt.bar(x, data['counts'], color=colors)
plt.xticks(x, data['days'])
plt.show()


PS:(可选)您可以使用plt.tick_params(axis='x', length=0)隐藏刻度线。
python - 在条形图中绘制许多天的数据而没有日期信息-LMLPHP

关于python - 在条形图中绘制许多天的数据而没有日期信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59764981/

10-12 21:59
查看更多