簡體   English   中英

matplotlib.pyplot.imshow 中的神器

[英]Artifact in matplotlib.pyplot.imshow

我正在嘗試使用 matplotlob.pyplot.imshow 制作 function 的彩色圖。 但是,根據 plot 的大小,我會得到一條垂直線作為偽影。

生成 plot 的代碼是:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec
from matplotlib import cm

def double_vortex(X,Y):
    return np.angle((X + 25)+1j*Y) - np.angle((X - 25)+1j*Y)

X = np.arange(-50,50)
Y = np.arange(-50,50)

X, Y = np.meshgrid(X, Y)
phi0_vortex = double_vortex(X,Y)
 
fig = plt.figure(figsize=(16,8)) 
gs = gridspec.GridSpec(1, 3, width_ratios=[2.5, 1.5,1]) 
for i in range(3):
    ax = plt.subplot(gs[i])
    ax.imshow(phi0_vortex % (2*np.pi), cmap=cm.hsv, vmin=0, vmax=2*np.pi)

生成的 plot 是這樣的:在此處輸入圖像描述

您可以看到兩個較小的圖顯示一條垂直線作為人工制品。 這是 matplotlib 中的錯誤還是實際上可以預期的錯誤?

這是 matplotlib 的下采樣算法的結果,該算法發生在數據空間中,在您的情況下,一對像素中包含 [359, 1] 的像素平均為 180,您會得到青色線。 這是https://github.com/matplotlib/matplotlib/issues/18735 ,我們正在研究一種允許 RGB 空間下采樣(以及)的解決方案。

在 Matplotlib 改進之前,你能做些什么呢? 不要在 Matplotlib 中下采樣是簡單的答案 - 制作一個大 png,然后在 imagemagick 等后處理軟件中重新采樣。

暫無
暫無

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

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