0

目前,我可以使用以下代码将我的数据绘制为两条曲线。

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-ticks 以相同的距离分开。如图所示:在此处输入图像描述

我对 Matplotlib 不是很熟悉,有人可以告诉我如何用上面的 x 轴生成图吗?

我尝试了 plt.xscale('log'),但得到了以下情节: 在此处输入图像描述

2 个相邻节点之间的距离看起来不错,但 xticks 看起来不太好。

4

1 回答 1

3

为此绘制任意等间距数字(使用起来很方便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()

在此处输入图像描述

于 2020-10-22T08:29:44.640 回答