我有一个数据集,包含:
一周中的日子
每周的每一天都很重要
例如,我的数据集可能是:
{
"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轴上的类别自动折叠数据点,而不是顺序显示数据。例如,这是我得到的图形:显然,通过在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 - 在条形图中绘制许多天的数据而没有日期信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59764981/