python - 将 pcolormesh 生成的 QuadMesh 转换为 RGBA 数组
问题描述
可以说我有以下代码:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10)
y = np.arange(10)
z = np.sum(np.meshgrid(x,y), 0)
qm = plt.pcolormesh(x, y, z[:-1, :-1])
qm
现在是一个QuadMesh对象。现在,我想将此 QuadMesh 转换为一个 RGBA 数组,在本例中是一个 9x9x4 数组,给出每个点的红色、绿色、蓝色和 alpha 值。
QuadmEsh 对象确实有一个to_rgba()
子例程,但我无法解释文档。to_rgba()
需要一些x值,其中 x 被描述为“一维或二维标量序列,并且将根据为此 ScalarMappable 设置的规范和颜色图返回相应的 rgba 值的 ndarray”。但我不确定这意味着什么......
解决方案
我不相信在绘制 pcolormesh 之前没有更好的方法来解决这个问题,但我认为这是你打算做的:
from matplotlib import pyplot as plt
import numpy as np
fig, (ax1, ax2) = plt.subplots(1, 2)
x = np.arange(10)
y = np.arange(10)
z = np.sum(np.meshgrid(x,y), 0)
qm1 = ax1.pcolormesh(x, y, z[:-1, :-1], cmap="plasma")
ax1.axes.set_aspect("equal")
#retrieve rgba values of the quadmesh object
rgbas = qm1.to_rgba(qm1.get_array().reshape(z[:-1, :-1].shape))
#modify the alpha values
rgbas[:, :, 3] = np.linspace(0, 1, z[:-1, :-1].size).reshape(z[:-1, :-1].shape)
#plot back with imshow
qm2 = ax2.imshow(rgbas, origin="lower")
ax1.set_title("pcolormesh")
ax2.set_title("imshow after alpha modification")
plt.tight_layout()
plt.show()
样本输出:
推荐阅读
- react-native - this.props.navigation.goBack() 在 DrawerNavigator 中不起作用
- python-3.x - SSL:CERTIFICATE_VERIFY_FAILED YouTube v3 API
- php - $this-> 在 Laravel 中渲染什么
- image - Chromeless - 从网页获取所有图像 src
- angular - Angular 2 - 向路由器添加密钥
- angular - 我应该在 Ionic 3 中使用 ChangeDetectionStrategy OnPush
- rest - 如何安排 API 请求
- c++ - 下标 (" [ ] ") 运算符给出奇怪的错误
- python - 访问嵌套外键对象的正确方法?
- php - PHP:使用 T 将字符串转换为 DateTime