pyplot图例的面色未显示

时间:2019-07-17 19:56:30

标签: python matplotlib

我有一个等高线图,我想使用其背景为白色的图例,以便图例在轮廓线上可读。

我的问题是,当我更改脸色时,什么也没发生。我也尝试过更改framealpha,但没有任何反应。这是一个玩具代码,以及生成的图。如何更改图例的面色,以便在轮廓上可读图例?

import numpy as np
import matplotlib.pyplot as plt

# Create data

delta = 0.025
x = np.arange(-1.0, 1.0, delta)
y = np.arange(-1.0, 1.0, delta)
X, Y = np.meshgrid(x, y)
Z = np.exp(-X**2 - Y**3)

# Plot data

fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z)

# Create legend.
# Code modified from https://github.com/matplotlib/matplotlib/issues/11134

CS_elem,_ = CS.legend_elements()
ax.legend(CS_elem, ['-X**2 - Y**3'], loc='lower left',facecolor="blue", framealpha=1)

enter image description here

2 个答案:

答案 0 :(得分:1)

您的代码在matplotlib 2.2.2上正常工作。不过,您可以按照this answer中的建议尝试以下解决方案。

CS_elem,_ = CS.legend_elements()
leg = ax.legend(CS_elem, ['-X**2 - Y**3'], loc='lower left',
                framealpha=1)
frame = leg.get_frame()
frame.set_facecolor('blue')

enter image description here

答案 1 :(得分:1)

根据您的评论,您已将legend.frameon设置为False。根据{{​​3}}的文档,默认值为True,以便“在背景补丁上绘制图例”。没有补丁,将无法应用facecolor