我想知道如何绘制日志图来可视化列表中元素的频率,例如:
my_list=[1,2,3,3,3,4,1,2,5,2,10,4,5,3,3,3,2,1]我用直方图绘制数据:
plt.hist(my_list, label='Frequency Distribution of matches')
plt.legend()
plt.ylabel('Frequency')但是把它想象成日志会更好。
发布于 2021-11-23 23:37:23
plt.hist包括一个log参数,它的行为类似于plt.yscale('log'),因为它只缩放y轴:
log:如果是True,则直方图轴将设置为日志比例尺。
若要缩放x轴,请将其与plt.xscale('log')相结合。
plt.hist(my_list, log=True)
plt.xscale('log')

如果想要等宽的条形图,请将bins定义为10 ** edges。
start, stop = np.log10(min(my_list)), np.log10(max(my_list))
bins = 10 ** np.linspace(start, stop, 10)
plt.hist(my_list, log=True, bins=bins)
ax.set_xscale('log')

若要获取频率的日志记录线图,请使用plt.stairs (需要matplotlib 3.4+)和np.histogram。
plt.stairs(*np.histogram(my_list))
plt.yscale('log')
plt.xscale('log')

https://stackoverflow.com/questions/70088437
复制相似问题