python - 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()
解决方案
最简单的解决方案是绘制 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 个元素
推荐阅读
- magento2.2 - Magento2 向 Creditmemo 添加附加字段
- python - 如何从张量流数据集中解包数据?
- sql-server - 插入查询在 SSMS 中有效,但在 SQLCMD 中无效
- javascript - 如何在javascript中将int作为HZ波输出到扬声器?(声音)
- java - Processbuilder不从Java中的OutputStream获取输入
- html - Yii2无法将html转换为pdf
- python - 在 python 中使用光谱进行多锥度光谱分析
- sql - 数组 json 将元素拆分为列 postgres
- javascript - 将 react-dropzone 添加到 react-16.13.1 项目时出现问题
- spring - 在 Spring 中将查询参数映射到对象中的名称别名