如何仅针对 NAN 值更改轮廓图中的颜色 matplotlib
How to change color in contourplot for just NAN values matplotlib
我正在从 pandas 数据框(例如 df)制作等高线图,其中图表的一部分是不应显示的值。在数据框中,它们是 NaN 值。 NaN 值显示为白色区域,但我想给这个白色区域一种颜色(例如黑色)。你怎么能做到这一点?我的代码和图表如下:
plt.figure(1, figsize=(12, 12), dpi=600)
# plot contour lines
contours = plt.contour(df.columns,df.index, df, 8, colors = 'black')
# add label to contour lines
contours.collections[0].set_label(parameter[choice]+ ' [%]')
plt.clabel(contours, inline=True, fmt='%1.1f' , fontsize=fontsize1)
# plot colormap
colormap = plt.contourf(df.columns,df.index, df, 800, cmap='RdYlGn', alpha=0.5) # plot color map
# plot blue operational point
plt.plot(FU, V, 'bo', markersize=markersize, label='Nominal operation')
# extra plot layout (not so important for example)
min_tick = df.to_numpy().min()
max_tick = df.to_numpy().max()
ticks = [np.linspace(min_tick, max_tick,3)]
cb = plt.colorbar(ticks = ticks)
cb.ax.tick_params(labelsize = fontsize1)
plt.xlabel('FU [-]', fontsize = fontsize2)
plt.ylabel('V [V]', fontsize = fontsize2)
plt.tick_params(axis='both', which='major', labelsize=fontsize1)
plt.grid(color = 'gray', linestyle=(0, (5, 10)), linewidth=1)
plt.legend(fontsize=fontsize2, loc = 'upper center')
plt.show
plt.savefig("contourplot " + parameter[choice] + " (V and FU)" +".png")
在 中,我发现最简单的方法是更改背景颜色,因为可以在其上绘制等高线图。但是,由于我使用透明色图,因此无法获得所需的结果(见下文)。有没有办法只给 NaN 值一种颜色?我也愿意将 NaN 值更改为字符串之类的东西,并在数据框包含此字符串的地方以不同的方式为轮廓着色。
更新:
感谢 Z Li 的帮助,它可以使用以下代码:
plt.contourf(df.columns,df.index, df, 800, colors = 'white')
plt.gca().set_facecolor("black")
colormap = plt.contourf(df.columns,df.index, df, 800, cmap='RdYlGn', alpha=0.5)
您是否考虑过先为绘图添加白色背景,然后将背景设置为黑色?
plt.contourf(df.columns,df.index, df, 800, colors = 'white')
colormap = plt.contourf(df.columns,df.index, df, 800, cmap='RdYlGn', alpha=0.5)
原剧情:
没有白色背景,这是您面临的问题:
白色背景:
我正在从 pandas 数据框(例如 df)制作等高线图,其中图表的一部分是不应显示的值。在数据框中,它们是 NaN 值。 NaN 值显示为白色区域,但我想给这个白色区域一种颜色(例如黑色)。你怎么能做到这一点?我的代码和图表如下:
plt.figure(1, figsize=(12, 12), dpi=600)
# plot contour lines
contours = plt.contour(df.columns,df.index, df, 8, colors = 'black')
# add label to contour lines
contours.collections[0].set_label(parameter[choice]+ ' [%]')
plt.clabel(contours, inline=True, fmt='%1.1f' , fontsize=fontsize1)
# plot colormap
colormap = plt.contourf(df.columns,df.index, df, 800, cmap='RdYlGn', alpha=0.5) # plot color map
# plot blue operational point
plt.plot(FU, V, 'bo', markersize=markersize, label='Nominal operation')
# extra plot layout (not so important for example)
min_tick = df.to_numpy().min()
max_tick = df.to_numpy().max()
ticks = [np.linspace(min_tick, max_tick,3)]
cb = plt.colorbar(ticks = ticks)
cb.ax.tick_params(labelsize = fontsize1)
plt.xlabel('FU [-]', fontsize = fontsize2)
plt.ylabel('V [V]', fontsize = fontsize2)
plt.tick_params(axis='both', which='major', labelsize=fontsize1)
plt.grid(color = 'gray', linestyle=(0, (5, 10)), linewidth=1)
plt.legend(fontsize=fontsize2, loc = 'upper center')
plt.show
plt.savefig("contourplot " + parameter[choice] + " (V and FU)" +".png")
在
更新: 感谢 Z Li 的帮助,它可以使用以下代码:
plt.contourf(df.columns,df.index, df, 800, colors = 'white')
plt.gca().set_facecolor("black")
colormap = plt.contourf(df.columns,df.index, df, 800, cmap='RdYlGn', alpha=0.5)
您是否考虑过先为绘图添加白色背景,然后将背景设置为黑色?
plt.contourf(df.columns,df.index, df, 800, colors = 'white')
colormap = plt.contourf(df.columns,df.index, df, 800, cmap='RdYlGn', alpha=0.5)
原剧情:
没有白色背景,这是您面临的问题:
白色背景: