繁体   English   中英

更改线图中线段的颜色

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM