如何使用 Matplotlib 绘制具有非线性 x 轴刻度的曲线?
How to use Matplotlib to plot curves with nonlinear x axis ticks?
目前,我可以使用以下代码将我的数据绘制为两条曲线。
from numpy import *
import math
import matplotlib.pyplot as plt
t = [1,2,4,8]
raw_1 = [0.02, 0.02, 0.3, 0.4]
raw_2 = [0.6, 0.7, 0.2, 0.3]
plt.plot(t, raw_1, color='r', marker='o')
plt.plot(t, raw_2, color='b', marker='o')
plt.show()
不过,我希望把x轴做成非线性的。例如,只有 1、2、4、8 是可见的,并且它们的 x 刻度以相同的距离分开。如图所示:
我对 Matplotlib 不是很熟悉,有人能告诉我如何用上面的 x 轴生成绘图吗?
我尝试了plt.xscale('log'),但我得到了以下情节:
两个相邻节点之间的距离看起来不错,但 xticks 看起来不太好。
为此绘制任意等距数字(使用 range()
很方便),然后用您的实际标签替换标签:
t = [1,2,4,8]
raw_1 = [0.02, 0.02, 0.3, 0.4]
raw_2 = [0.6, 0.7, 0.2, 0.3]
x = range(len(t))
plt.plot(x, raw_1, color='r', marker='o')
plt.plot(x, raw_2, color='b', marker='o')
plt.xticks(x,t)
plt.show()
目前,我可以使用以下代码将我的数据绘制为两条曲线。
from numpy import *
import math
import matplotlib.pyplot as plt
t = [1,2,4,8]
raw_1 = [0.02, 0.02, 0.3, 0.4]
raw_2 = [0.6, 0.7, 0.2, 0.3]
plt.plot(t, raw_1, color='r', marker='o')
plt.plot(t, raw_2, color='b', marker='o')
plt.show()
不过,我希望把x轴做成非线性的。例如,只有 1、2、4、8 是可见的,并且它们的 x 刻度以相同的距离分开。如图所示:
我对 Matplotlib 不是很熟悉,有人能告诉我如何用上面的 x 轴生成绘图吗?
我尝试了plt.xscale('log'),但我得到了以下情节:
两个相邻节点之间的距离看起来不错,但 xticks 看起来不太好。
为此绘制任意等距数字(使用 range()
很方便),然后用您的实际标签替换标签:
t = [1,2,4,8]
raw_1 = [0.02, 0.02, 0.3, 0.4]
raw_2 = [0.6, 0.7, 0.2, 0.3]
x = range(len(t))
plt.plot(x, raw_1, color='r', marker='o')
plt.plot(x, raw_2, color='b', marker='o')
plt.xticks(x,t)
plt.show()