首页 > 解决方案 > 如何使用 matplotlib.pyplot 在 xticks 中包含负数?

问题描述

我有一个看起来像这样的 DataFrame:

df = [4, -1, 5, -32, 4, -32, -1]

我想这样设置xticks

tick_locs = [-30, -10, 0, 10, 30, 100, 300, 1000, 3000]
plt.xticks(tick_locs, tick_locs)

这给了我一个奇怪的图表: 在此处输入图像描述

我可以将刻度设置为所有正数,但这不会在 x 轴上给我负数:

tick_locs = [10, 30, 100, 300, 1000, 3000]
plt.xticks(tick_locs, tick_locs)

在此处输入图像描述

知道如何获得负刻度吗?

PS 数据设置为已记录,但 x 轴设置为显示实际数字:

bin_edges = 10 ** np.arange(-0.1, np.log10(planes_df['ArrDelay'].max())+0.1, 0.1)
plt.hist(planes_df['ArrDelay'], bins = bin_edges)
plt.xscale('log')
tick_locs = [10, 30, 100, 300, 1000, 3000]
plt.xticks(tick_locs, tick_locs)

标签: pythonmatplotlib

解决方案


尝试删除该行plt.xscale('log')。这将使 x 轴刻度呈线性。对数轴不能显示非正值,log(x)x <= 0​​ .


推荐阅读