Python3(Anaconda3)和Matplotlib绘制指定的x-ases值

时间:2019-03-05 11:37:56

标签: python python-3.x matplotlib

我的问题是关于情节的可读性问题。我在StackOverflow上阅读了几个类似的问题,但没有一个能够完全解决问题。

我有一个带有100个横坐标和纵坐标值的txt文件。 我想绘制它们,但在x轴上只显示指定的刻度值。 例如:第1、2、3、4、5、44、88和99点。我只是想提高可读性,因为无论如何我都希望绘制所有点。 我试过的是:

import matplotlib.pyplot as plt
import numpy as np

plt.xlabel("Values")
plt.ylabel("Percentage")

for i in range(99):
    try:
        filename = "Folder_Name/foo_%d.txt" % i
        filevals = np.loadtxt(filename, usecols=1) 
        idx = [1, 2, 3, 4, 5, 44, 88, 99]
        y = [filevals[k]*100 for k in idx]
        plt.plot(range(len(idx)), y, 'o-', label="values_foo_%s" % i)
        plt.xticks(range(len(idx)), idx)
    except IOError or IndexError:
        break

plt.legend(loc=4)
plt.grid(True)
plt.tight_layout()
plt.savefig("plot_test.pdf")
plt.close()

当然,结果是,得出的图仅绘制了忽略其他点的值,因此,第5点和第44点之间的距离与第4点和第5点之间的距离相同。 / p>

1 个答案:

答案 0 :(得分:1)

只需写:plt.xtick([0, 1, 2, 3, 4, 43, 87, 98])

此外,请不要忘记列表索引以0开头。