首页 > 解决方案 > Matplotlib 简单的不同颜色线图

问题描述

我有一个非常简单的 matplot 图,想要更改线条颜色,当数据高于 50 时,线条将变为红色,低于 50 时线条颜色将变为绿色。

如何更改线条颜色,目前我使用绘图加载 x 和 y 数据然后显示图表。

我已经尝试了两种将数据加载到图表中的方法,但它们都不起作用,也无法弄清楚我们在处理看似如此简单的事情时要做什么。

# ==========================
# First try at the changing the line colour

import matplotlib.pyplot as plt
import pandas as pd

for i in range(0,100):
   if (i>50):
       plt.plot(i,i, color = 'r') #plot red line
if (i<49):
    plt.plot(i,i, color = 'g') #plot red line

plt.show()

# ==========================
# Second try at the changing the line colour

for i in range(0,50):
   x.append(i)
   y.append(i)

plt.plot(x,y, color='green')

for i in range(50,100):
   x.append(i)
   y.append(i)

plt.plot(x,y, color='red')
plt.show()

标签: pythonmatplotlibgraph

解决方案


最简单的解决方案是绘制 2 条线,一条绿色和一条红色。您的第二次尝试接近于这样做,问题是您的红线;你用绿色绘制 0-50,然后用红色绘制 0-100(你一直在追加而没有先清除列表!)

如果你使用 numpy 数组,那么使用条件切片来生成你想要的数据元素真的很容易。试试这个:

import numpy as np
x = np.arange(100)
y = np.arange(100)

# Plot all data elements in red
plt.plot(x, y, color='red')

# Replot any y<50 elements in green
plt.plot(x[y < 50], y[y < 50], color='green')

plt.show()

由于第二个图是第一个图的子集,因此您会得到隐藏红点的绿点。这在视觉上等同于仅分别绘制红点和绿点,例如使用plt.plot(x[y >= 50], y[y >= 50], color='red')仅绘制 >= 50 个元素


推荐阅读