matplotlib x 轴值
matplotlib x axis values
我对 matplotlib 中绘图的图形表示有疑问。
有两个问题:
- 我没有为每个 x 值计算 y。
例如列表 y: [1.0, 3.5, 3.3, 1.1, 2.4] 不对应于 x: [1, 2, 3, 4, 5],而是 [2, 6, 10, 14, 18](空格总是规则的)。
我已经解决了这个问题,但是以非常不合理的方式:
plt.xticks(list(range(len(my_list))), list(range(bound[0], bound[1] + 1, delta)))
结果好像还不错:
- 边界越宽,问题就越大。例子:
范围是从 2 到 1000,增量为 10。
x 轴值为 [2, 12, 22, 32, ...] 但它完全不可读
所以...我已经尝试了很多来创造更好的东西。我以晦涩难懂的代码结尾:
n_x_axis = 10 #number of values on axis
x_axis_val = list(range(bound[0], bound[1]+1, delta))
a = len(my_list)
b = int(((bound[1]-bound[0] + 1)/delta)//n_x_axis)
for i in range(0, a, b):
if i + b < a:
for j in range(b):
if j != 0:
x_axis_val[i+j] = None
else:
for x in range(i, a):
if x != a-1:
x_axis_val[x] = None
plt.plot(my_list)
plt.title("my_list")
plt.xticks(list(range(len(my_list))), x_axis_val)
结果如下:
绑定 = (2, 10000)
增量 = 10
我确信有更好的方法可以解决我的问题。也许这有一些适当的功能......
尽管我的解决方案如此广泛,但仍然有缺点,例如 x 轴上的点太密集了。
我该如何改进这个解决方案?
提前谢谢你。
我对 matplotlib 中绘图的图形表示有疑问。 有两个问题:
- 我没有为每个 x 值计算 y。 例如列表 y: [1.0, 3.5, 3.3, 1.1, 2.4] 不对应于 x: [1, 2, 3, 4, 5],而是 [2, 6, 10, 14, 18](空格总是规则的)。
我已经解决了这个问题,但是以非常不合理的方式:
plt.xticks(list(range(len(my_list))), list(range(bound[0], bound[1] + 1, delta)))
结果好像还不错:
- 边界越宽,问题就越大。例子:
范围是从 2 到 1000,增量为 10。 x 轴值为 [2, 12, 22, 32, ...] 但它完全不可读
所以...我已经尝试了很多来创造更好的东西。我以晦涩难懂的代码结尾:
n_x_axis = 10 #number of values on axis
x_axis_val = list(range(bound[0], bound[1]+1, delta))
a = len(my_list)
b = int(((bound[1]-bound[0] + 1)/delta)//n_x_axis)
for i in range(0, a, b):
if i + b < a:
for j in range(b):
if j != 0:
x_axis_val[i+j] = None
else:
for x in range(i, a):
if x != a-1:
x_axis_val[x] = None
plt.plot(my_list)
plt.title("my_list")
plt.xticks(list(range(len(my_list))), x_axis_val)
结果如下: 绑定 = (2, 10000) 增量 = 10
我确信有更好的方法可以解决我的问题。也许这有一些适当的功能...... 尽管我的解决方案如此广泛,但仍然有缺点,例如 x 轴上的点太密集了。
我该如何改进这个解决方案? 提前谢谢你。