我想根据y轴上的数据集的以下颜色绘制线条。
if data > 0:
color = 'r'
if data = 0:
color = 'g'
if data < 0:
color = 'b'
不幸的是,我只知道如何为整个数据集着色一种颜色。我也无法在网上找到任何东西。我假设有一种方法可以在每次颜色变化时不分解数据集。
以下是仅使用一种颜色绘制数据的示例。
import matplotlib.pyplot as plt
import numpy as np
# Simple data
x = np.linspace(0, 2 * np.pi, 400)
data = np.sin(x ** 2)
#plot
f, ax = plt.subplots()
ax.plot(x, data, color='r')
plt.show()
答案 0 :(得分:2)
color参数实际上可以将列表作为参数。例如,这里有一段简单的代码,根据数据是正面还是负面来设置颜色列表:
colors = []
for item in data:
if item < 0:
colors.append('r')
else:
colors.append('g')
然后简单地说:
ax.bar(x, data, color=colors)
编辑:所以我测试了它,似乎我的答案仅适用于条形图。我在matplotlib文档中找不到任何似乎表明可以使用多种颜色着色线图的任何内容。我做了,但找到了this site,我相信它有你想要的信息。那里的人定义了自己的功能来实现它。
在我的链接中使用该文件,这是一个等效的折线图版本:
cmap = ListedColormap(['r', 'g']) # use the colors red and green
norm = BoundaryNorm([-1000,0,1000], cmap.N) # map red to negative and green to positive
# this may work with just 0 in the list
fig, axes = plt.subplots()
colorline(x, data, data, cmap=cmap, norm=norm)
plt.xlim(x.min(), x.max())
plt.ylim(data.min(), data.max())
plt.show()
此处色线的最后三个参数告诉它颜色数据以及如何映射它。