Matplotlib:在单个图中绘制多线图(离散图)

时间:2011-08-09 11:12:53

标签: matplotlib

我想知道是否有一种自然的方式来绘制一个图形,该图形包含一组不同长度的行,如下所示:

5  |   x--------x
4  |     x-----x x--x
3  |
2  |           x----x
1  |     x-----x       
0  |_______________________________
      '      '     '     '     '
      10    20    30    40    50

是每行执行图表的唯一选择吗?

2 个答案:

答案 0 :(得分:1)

plot命令可以绘制一组线,你的例子可以用长线绘制

plot([15,25],[1,1],'k--',[25,35],[2,2],'k--',[15,25,nan,28,35], [4,4,4,4,4],'k--', [12,27],[5,5],'k--')

或者,它绘制两个矩阵的列,使用

X = [[15,25,15,28,12],[25,35,25,35,27]]
Y = [[1,2,4,4,5],[1,2,4,4,5]]
plot(X, Y, 'k--*')

在两个轴命令中可能需要查看所有行

axis((5,50,0,6))

答案 1 :(得分:1)

定义一个以给定行的两个终端作为参数的函数更方便。

import matplotlib.pyplot as plt

def line(x1, y1, x2, y2):
    plt.plot([x1, x2], [y1, y2], 'k--x')

plt.figure()

line(14, 1, 24, 1)
line(24, 2, 32, 2)
line(14, 4, 24, 4)
line(27, 4, 32, 4)
line(12, 5, 25, 5)

plt.axis([5, 50, 0, 6])
plt.savefig('lines.png')

lines.png

另一种方法是使用axhline()绘制水平线。