【问题标题】:Forcing negative xticks with log xscale使用 log xscale 强制负 xticks
【发布时间】:2019-05-22 16:19:42
【问题描述】:

您好,我正在尝试绘制一些以对数刻度 (base2) 演变但有一些负数部分的数据(它与频率相关,因此与我的中心频率相比为负数)。我能够完全绘制它,但刻度标签不正确(应该从 -0.5 到 64,即使我不得不强制我的 -0.5 为正,以便 xscale 包含它)

xData = np.array([10, 20, 40, 80, 160, 320, 640, 1280])

yData1 = np.array([-6.30404, 8.69744, 12.975, 26.69, 18.76, 18.85, 18.91, 22.68])

yData2 = np.array([-7.59254, 10.9645, 21.345, 20.48, 22.34, 25.57, 24.68, 25.52])

yData3 = np.array([2.20636, 1.98, 6.14625, 11.099, 23.41, 23.77,35.6, 33.996,])

yData4 = np.array([-3.19325, 0.8, 4.48, 11.033, 22.18, 23.15, 31.826, 34.755])

yData5 = np.array([0.592, 3.84101, 5.12036, 12.02374, 17.124, 22.88, 26.49, 32.117])

yData6 = np.array([0.516, 5.23039, 7.66303, 11.546, 16.918, 19.15, 24.35, 25.6732])

plt.figure()
plt.plot(xData/20, yData1)
plt.plot(xData/20, yData2)
plt.plot(xData/20, yData3)
plt.plot(xData/20, yData4)
plt.plot(xData/20, yData5)
plt.plot(xData/20, yData6)
plt.grid(True, linestyle='--', which='both')
plt.ylim(-10,40)
plt.xticks([-0.5, 1, 2, 4, 8, 16, 32, 64])
plt.xscale('log', basex=2)
plt.gca().set_xticklabels([0.5, 1, 2, 4, 8, 16, 32, 64])
#plt.legend()
plt.show()

【问题讨论】:

  • 尝试使用'symlog'比例而不是'log'

标签: python matplotlib


【解决方案1】:

我不确定为什么默认情况下第一个刻度位于并标记为 0.5 而不是 -0.5,但是您非常接近更改刻度标签。您只需将 -0.5 转换为 0.5

plt.xscale('log', basex=2)
plt.xticks([0.5, 1, 2, 4, 8, 16, 32, 64]) # <--- change -0.5 to 0.5
plt.gca().set_xticklabels([-0.5, 1, 2, 4, 8, 16, 32, 64]) # <--- change 0.5 to -0.5

【讨论】:

  • 谢谢!我几乎尝试了所有变体,但无法获得它。我快疯了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 2019-11-29
  • 2021-09-23
  • 1970-01-01
  • 2019-05-02
  • 2017-12-27
  • 1970-01-01
相关资源
最近更新 更多