1

只想绘制一个包含 50 个(实际上是 51 个)元素的列表:从 0 到 50 的列表索引应该代表 x 轴上从 0 到 10 米的米,而每个进一步元素的索引增加 0.2 米。例子:

list = [2.5, 3, 1.5, ... , 7, 9]
len(list)
>>50

我想绘制从 0 到 10 米的 x 轴,即 (x,y)==(0, 2.5), (0.2, 3), (0.4, 1.5), ..., (9.8, 7), (10, 9)

相反,该列表显然是在从 0 到 50 的 x 尺度上绘制的。知道如何解决这个问题吗?谢谢!

4

1 回答 1

7

我会避免命名一个列表对象list。它混淆了命名空间。但是尝试类似的东西

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)

x = np.arange(0, 10, 0.2)
y = [2.5, 3, 1.5, ... , 7, 9]
ax.plot(x, y)
plt.show()

它在 x 轴上创建一个点列表,这些点出现在0.2using的倍数np.arange处,matplotlib 将在该点绘制 y 值。Numpy 是一个用于轻松创建和操作向量、矩阵和数组的库,尤其是当它们非常大时。

编辑:

fig.add_subplot(N_row,N_col,plot_number)是使用 matplotlib 进行绘图的面向对象的方法。如果您想将多个子图添加到同一个图形,这很有用。例如,

ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)

将两个子图添加到同一个图fig。它们将排列成两排,一个在另一个之上。ax2是底部的子图。查看此相关帖子以获取更多信息。

要更改实际的 x 刻度和刻度标签,请使用类似

ax.set_xticks(np.arange(0, 10, 0.5))
ax.set_xticklabels(np.arange(0, 10, 0.5)) 
# This second line is kind of redundant but it's useful if you want 
# to format the ticks different than just plain floats. 
于 2013-09-13T20:54:17.850 回答