簡體   English   中英

將 pcolormesh 生成的 QuadMesh 轉換為 RGBA 數組

[英]Convert QuadMesh generated by pcolormesh to an RGBA array

可以說我有以下代碼:

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 object。 現在,我想將此 QuadMesh 轉換為 RGBA 數組,在本例中為 9x9x4 數組,在每個點上給出紅色、綠色、藍色和 alpha 值。

QuadmEsh object 確實有一個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()

樣品 output:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM