如何绘制两种不同颜色的曲线? (不使用熊猫)

时间:2019-04-01 10:18:12

标签: python python-3.x numpy matplotlib plot

我需要使用matplotlib.pyplot创建一个图,该图显示地球和火星之间随时间的距离。除此之外,例如3月至8月应以与其他月份不同的颜色显示。 从包含日期,距离和标志的数组中提供数据,该标志指示日期是否在3月到8月之间。

包含整个数据的数组称为master_array。第一列包含日期,第二列包含距离。 s / w标志位列第七。 (夏季代表“ s”,冬季代表“ w”)。

我尝试利用pyplot.plot为每个.plot命令切换颜色的事实,我首先绘制冬季,然后绘制夏季。

import numpy as np
from matplotlib import pyplot as plt

def md_plot2(dt64=np.array, md=np.array):
    """Erzeugt Plot der Marsdistanz (y-Achse) zur Zeit (x-Achse)."""
    plt.style.use('seaborn-whitegrid')

    y, m, d = dt64.astype(int) // np.c_[[10000, 100, 1]] % np.c_[[10000, 100, 100]]
    dt64 = y.astype('U4').astype('M8') + (m-1).astype('m8[M]') + (d-1).astype('m8[D]')

    wFilter = np.argwhere(master_array[:,6] == 0)
    sFilter = np.argwhere(master_array[:,6] == 1)

    plt.plot(dt64[wFilter], md[wFilter], label='Halbjahr der fallenden \nTemperaturen')
    plt.plot(dt64[sFilter], md[sFilter], label='Halbjahr der steigenden \nTemperaturen')

    plt.xlabel("Zeit in Jahren\n")
    plt.xticks(rotation = 45)
    plt.ylabel("Marsdistanz in AE\n(1 AE = 149.597.870,7 km)")
    plt.legend(loc='upper right', frameon=True)

plt.figure('global betrachtet...') # diesen Block ggf. auskommentieren
#plt.style.use('seaborn-whitegrid')
md_plot2(master_array[:,0], master_array[:,1]) # Graph

plt.show()
#plt.close()

现在的问题是,在夏季的最后一点和下一个夏季的第一点之间,夏季图显示一条线,而其他图(对于冬季)则显示了介于两者之间的正确的冬季数据两个夏天。 数据包含许多数据点,这些数据点将导致这两种颜色的许多段。 当下一个数据点超过将来的一天时,如何停止绘制曲线? 也许还有pyplot的另一种方法可以完成此任务吗?

由于我在不使用熊猫的情况下在脚本所属的代码中编写了很多代码,因此我很高兴找到不使用熊猫的解决方案,因为我不想避免使用它,因为我不想because肿我的脚本当有办法通过使用我已经在使用的模块来完成任务时。我还读到它会降低速度here

2 个答案:

答案 0 :(得分:1)

multicolored_line示例看起来像您想要的。

有关Matplotlib中颜色图系统的更多信息,另请参见this article

答案 1 :(得分:0)

这里是一个简单的部分,只是“覆盖”部分,您需要使用另一种颜色:

import matplotlib.pyplot as plt
%matplotlib inline
x = list(range(10))
y = [ 2*i for i in x]
x_1 = x[4:7]
y_1 = y[4:7]
plt.plot(x,y)
plt.plot(x_1,y_1)
plt.show()