python - 使用具有 2 种自定义颜色的 Matplotlib 在散点图中设置正值和负值的颜色
问题描述
对于 Matplotlib 中的散点图,我想以绿色显示正 (y) 值,以红色显示负 (y) 值。如果我设置值 z>0,并将其放入 (c) 的参数中,默认情况下,它确实为我提供了正值和负值的 2 种不同颜色。但我想将这些颜色更改为我选择的绿色为正,红色为负。我怎样才能做到这一点?
x = [4, 5, 11, 15]
y = [17, -14, 13, -19]
z = y > 0
plt.scatter(x, y, c=z)
plt.show()
解决方案
您可以重新排列数据并将其拆分为正值和负值。作为此答案的一部分,我建议您使用np.array
而不是使用 dtype list
,因为在这种情况下使用索引要容易得多
import numpy as np
# data
x = np.array([ 4, 5, 11, 15 ])
y = np.array([ 17, -14, 13, -19 ])
z = 0
valid_pos = [] # preallocate appending variable
valid_neg = []
for i in range(0, x.shape[0]): # 0 for number of lines, 1 for number of columns
if y[i] >= z:
valid_pos.append(i)
elif y[i] < z:
valid_neg.append(i)
x_pos = x[valid_pos] # rearrange your data
y_pos = y[valid_pos]
x_neg = x[valid_neg]
y_neg = y[valid_neg]
# plotting figure
plt.figure()
plt.scatter(x_pos, y_pos, c='g')
plt.scatter(x_neg, y_neg, c='r')
plt.show()
推荐阅读
- javascript - 当用户浏览网站时如何保留查询字符串参数
- ffmpeg - ffmpeg 编解码转换;无法配置编码器
- java - 根据条件链接可完成的期货
- android - 使用 okhttp 从异步调用填充列表视图
- powershell - Powershell 和正则表达式解析配置并显示配置了 ospf 的界面
- python - 十六进制到字符串的转换
- c++ - 有符号双字节到无符号字节:ARM64 与 Win64
- output - pmap 数据格式(Julia 1.1.0)
- c# - 始终不一致的 MySQL 查询结果 - 返回 0 对 n 行
- user-interface - 当屏幕在颤动中滚动时动画小部件位置(包括 GIF)