[英]Change color of lineplot mid-line segment
我需要 plot 一行 plot。 我想 plot 线图的所有部分低于零蓝色,所有部分高于红色。
这是我到目前为止所管理的:
import numpy as np
import xarray as xr
import matplotlib.pyplot as plt
x = np.linspace(0, 1, 40)
y = np.random.random(len(x))-0.5
da = xr.DataArray(y, dims=('x',), coords={'x':x})
fig = plt.figure(figsize=(12,6))
ax = fig.add_subplot(1, 1, 1)
da.plot(ax=ax, color='red', linewidth=3)
da.where(y<0).plot(ax=ax, color='blue', linewidth=3)
plt.show()
这是我从这个脚本中得到的:
但我想要的是颜色在阈值 0 处改变,就像这个例子(我已经修改以显示我想要的):
我在这里查看了一些建议,例如这里: Plot:颜色都大于不同的颜色
但我得到与该解决方案相同的数字。 似乎解决方案在于它们的所有线段都非常短,因此您不会注意到通过阈值的线段不会在阈值处改变颜色,并且只有下一个线段以不同的方式绘制颜色。
有没有一种简单的方法可以做到这一点? 还是我必须手动分离跨越阈值的线段?
谢谢
似乎解决方案在于它们的所有线段都非常短,因此您不会注意到通过阈值的线段不会在阈值处改变颜色,并且只有下一个线段以不同的方式绘制颜色。
您可以只插入您的数据,以便这也适用于您的数据。
import numpy as np
import xarray as xr
import matplotlib.pyplot as plt
xx = np.linspace(0, 1, 40)
yy = np.random.random(len(xx))-0.5
x = np.linspace(0, 1, 4000)
y = np.interp(x, xx, yy) # linear piecewise interpolation
da = xr.DataArray(y, dims=('x',), coords={'x':x})
fig = plt.figure(figsize=(12,6))
ax = fig.add_subplot(1, 1, 1)
da.plot(ax=ax, color='red', linewidth=3)
da.where(y<0).plot(ax=ax, color='blue', linewidth=3)
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.