当我运行以下代码时:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
x_data = np.random.randn(10000)
y_data = np.random.randn(10000)
hist, xbins, ybins = np.histogram2d(x_data, y_data, bins=100)
hist_masked = np.ma.masked_where(hist<1e-3, hist)
cmap = matplotlib.cm.jet
#cmap.set_bad('w',1.)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.imshow(hist_masked.T, interpolation = 'none', cmap = cmap)
plt.savefig('test.eps',transparent=False)
plt.show()
情节在屏幕上看起来很好但是eps文件有额外的黑色&#34;正方形&#34;。为什么? 只有当我将情节保存为eps时才会出现这些黑色方块,即使使用eps,我也可以通过取消注释&#34; set_bad&#34;来消除它们。代码中的命令。如果我正在绘制一个蒙面数组,为什么该绘图必须使用该命令?
谢谢!
答案 0 :(得分:0)
屏蔽数组hist_masked
将错误的值设置为np.nan
,matplotlib中的颜色映射具有nans的预定义值:
In [5]: plt.cm.jet._rgba_bad
Out[5]: (0.0, 0.0, 0.0, 0.0)
默认情况下,它设置为黑色并且完全透明。但是,当您在保存时设置transparent=False
时,这些点实际上变为可见(因为alpha设置为1)。
使用时:
cmap.set_bad('w',1.)
您将错误的颜色设置为白色('w'
),因此您不会在生成的eps文件中看到它们。
eps文件无法处理透明度。但是,您可以考虑保存到pdf
并删除标记transparency=False
。这也可以解决问题。