我需要使用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。
答案 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()