一维图 matplotlib

12 投票
1 回答
42455 浏览
提问于 2025-04-18 05:51

我想在一条线上根据一个数组(最多1000个元素)来绘制刻度。我不太想用下面这种方式:

    plt.xticks(energies[i][j])

因为这样每个样本值都会写在刻度的上方。我查阅了很多Matplotlib的文档,但除了hist()之外没有找到其他方法。如果你们知道有什么其他方法可以把一维数组可视化成一条线,我会非常感激,特别是如果能用颜色来表示值的密度。

我使用的是Spyder 2.2.5,Python 2.7.6 | 64位,运行在OSX 10.7.4上。

1 个回答

22

编辑

正如 @tcaswell 在评论中提到的,eventplot 是一个很好的方法来实现这个功能。下面是一个示例:

from matplotlib import pyplot as plt
import numpy as np

plt.figure()
a = [1,2,5,6,9,11,15,17,18]
plt.hlines(1,1,20)  # Draw a horizontal line
plt.eventplot(a, orientation='horizontal', colors='b')
plt.axis('off')
plt.show()

这里输入图片描述

或者你可以使用垂直线的标记?下面的例子展示了基本的思路。你可以改变标记的颜色来表示密度。

from matplotlib import pyplot as plt
import numpy as np

a = [1,2,5,6,9,11,15,17,18]

plt.hlines(1,1,20)  # Draw a horizontal line
plt.xlim(0,21)
plt.ylim(0.5,1.5)

y = np.ones(np.shape(a))   # Make all y values the same
plt.plot(a,y,'|',ms = 40)  # Plot a line at each location specified in a
plt.axis('off')
plt.show()

这里输入图片描述

撰写回答