一维图 matplotlib
我想在一条线上根据一个数组(最多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()