我有一个等高线图,我想使用其背景为白色的图例,以便图例在轮廓线上可读。
我的问题是,当我更改脸色时,什么也没发生。我也尝试过更改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)
答案 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')
答案 1 :(得分:1)
根据您的评论,您已将legend.frameon
设置为False
。根据{{3}}的文档,默认值为True
,以便“在背景补丁上绘制图例”。没有补丁,将无法应用facecolor
。