Python matplotlib中的两点线段图

Python matplotlib中的两点线段图,python,matplotlib,plot,Python,Matplotlib,Plot,如何绘制两点线段图,如下图所示 数据如下所示 x=[1,2,3,4,5,6] y=[1.2,1.2,-2.1,-2.1,4.1,-4.1]#这些y值总是成对的,因此我需要一条实线来连接这些等效值,然后在这对和下一对之间用一条虚线连接。你是指这样的吗 import pylab xdata = [0, 1, 2, 3, 4, 5] ydata = [0, 1, 2, 2, 1, 0] # Assuming xdata, ydata are of suitable length and type p

如何绘制两点线段图,如下图所示

数据如下所示

x=[1,2,3,4,5,6]


y=[1.2,1.2,-2.1,-2.1,4.1,-4.1]#这些y值总是成对的,因此我需要一条实线来连接这些等效值,然后在这对和下一对之间用一条虚线连接。

你是指这样的吗

import pylab
xdata = [0, 1, 2, 3, 4, 5]
ydata = [0, 1, 2, 2, 1, 0]
# Assuming xdata, ydata are of suitable length and type
plots = [pylab.plot(xdata[i:i + 2], ydata[i:i + 2], **whatever_keyword_arguments) for i in xrange(0, len(xdata), 2)]
pylab.show()

操作编辑后编辑:

我明白你的意思了,用破折号加上几行是很简单的

def plot_broken(xseq, yseq, even=True, **plot_kwargs):
    size = len(xseq)
    assert size == len(yseq)
    assert size % 2 == 0
    start = 0 if even else 1
    return [pylab.plot(xseq[i:i + 2], yseq[i:i + 2], **plot_kwargs)
            for i in xrange(start, size, 2)]
plots = plot_broken(xdata, ydata, even=True, color="m",
                    linestyle="solid")
plots += plot_broken(xdata, ydata, even=False, color="m",
                     linestyle="dashed")

这能实现你的期望吗

import numpy as np
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6]
y = [1.2, 1.2, 2.1, 2.1, -4.1, -4.1]

plt.plot(x, y, 'm--')

pair_x_array = np.reshape(x, (-1, 2))
pair_y_array = np.reshape(y, (-1, 2))
for i, pair_x in enumerate(pair_x_array):
    pair_y = pair_y_array[i]
    plt.plot(pair_x, pair_y, 'm', linewidth=3)

plt.show()

与MeshachBlue的答案相比,可能的重复看起来稍微复杂一些。@user274642不可能。就绘制的线段而言,两者都是O(n);)呵呵:)只是不同的风格:)