python - Matplotlib.pyplot:如何滥用参数“c”来绘制具有不同颜色图的点?
问题描述
我正在使用一个外部库,它具有使用matplotlib.pyplot
. 它接受一个numpy.ndarray
/pandas.DataFrame
并生成一个自定义图形。我想“滥用”这个matplotlib.pyplot.plot(..., c=colors, ...)
论点,这样我就可以使用np.vstack
多个矩阵并传入一个颜色值,这样我就可以用不同的颜色图为每个子矩阵着色。
a = np.zeros((10, 2))
b = np.zeros((20, 2))
c = np.zeros((5, 2))
plot_mat = np.vstack(a, b, c)
colors = list(range(a.shape[0])) + list(range(b.shape[0])) + list(range(c.shape[0]))
external_fn(plot_mat, ..., c=colors)
解决方案
This can be achieved actually rather easily:
from matplotlib import cm
cm_a = cm.get_cmap('viridis')
cm_b = cm.get_cmap('inferno')
c_a = np.array(list(range(a.shape[0])))
c_b = np.array(list(range(b.shape[0])))
c_a = c_a / np.max(c_a)
c_b = c_b / np.max(c_b)
c = [cm_a(i) for i in c_a] + [cm_b(i) for i in c_b]
推荐阅读
- python - 对覆盖后续类实例化的属性数据的自定义“类型化属性”模式进行故障排除
- arduino - ESP32 输出引脚不适用于 Arduino IDE
- python - 使用拆分 python 从 JSON 生成不同的字符串
- vue.js - Rendertron 设置——如何通过 Vue 2 Cli express 服务器运行它的中间件(用于生产)
- wordpress - 我想用 Paypal Checkout 上的一些文本替换我的 paypal 电子邮件地址
- veins - 通过增加其在带有静脉的动脉中的传输功率来增加车辆的通信范围
- python - 使用 TensorFlow 对象检测 API 进行条件检测
- sql - hive 中的子查询不能与 CTE 一起使用
- python - 在 SQL 或 Pandas 中对具有多个唯一性属性的数据集进行重复数据删除
- amazon-web-services - 如何在 CDK (AWS) 中将安全组添加到 VPC 端点