【问题标题】:python histogram first and last data weirdpython直方图第一个和最后一个数据很奇怪
【发布时间】:2020-07-17 06:59:48
【问题描述】:

我正在尝试在直方图中绘制此图,但该图绘制不正确。我希望值以 xticks 为中心。我希望在不使用 numpy 或 pandas 的情况下完成此操作。我怎样才能成功?

res = [1,2,3,1,5,4,2,6,3,4,1,2,3,4,1,5,6,1,2,3,4,5] # range 1~6
plt.figure(figsize=[4,4])
plt.hist(x=res)
plt.grid(axis='y', alpha=0.75)
plt.xlabel('Value',fontsize=15)
plt.ylabel('Frequency',fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.show()

【问题讨论】:

标签: python-2.7 matplotlib


【解决方案1】:

我发现这个问题的解决方案changing default x range in histogram matplotlib

也解决了你的问题:


import numpy as np
import matplotlib.pyplot as plt

res = [1,2,3,1,5,4,2,6,3,4,1,2,3,4,1,5,6,1,2,3,4,5]

u, counts = np.unique(res, return_counts=True)

plt.bar(np.arange(len(u)), counts)
plt.xticks(np.arange(len(u)), u)

plt.grid(axis='y', alpha=0.75)
plt.xlabel('Value',fontsize=15)
plt.ylabel('Frequency',fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)

plt.show()

更新: 没有 numpy:

import matplotlib.pyplot as plt
from collections import Counter
res = [1,2,3,1,5,4,2,6,3,4,1,2,3,4,1,5,6,1,2,3,4,5]

counts = {k: v for k, v in sorted(Counter(res).items(), key=lambda item: item[1])}

u = set(res)

plt.bar(range(len(u)), counts)
plt.xticks(range(len(u)), u)

plt.grid(axis='y', alpha=0.75)
plt.xlabel('Value',fontsize=15)
plt.ylabel('Frequency',fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)

plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2012-01-28
    • 2022-01-01
    相关资源
    最近更新 更多