2024-05-20 00:01:35 发布
网友
我正在绘制一个带有半透明“x”标记(20%alpha)的绘图。如何使标记在图例中以100%不透明度显示
import matplotlib.pyplot as plt plt.plot_date( x = xaxis, y = yaxis, marker = 'x', color=[1, 0, 0, .2], label='Data Series' ) plt.legend(loc=3, mode="expand", numpoints=1, scatterpoints=1 )
更新: 有一个更简单的方法!首先,在创建变量时将图例指定给变量:
leg = plt.legend()
然后:
for lh in leg.legendHandles: lh.set_alpha(1)
或者,如果上述方法不起作用(您可能正在使用较旧版本的matplotlib):
matplotlib
for lh in leg.legendHandles: lh._legmarker.set_alpha(1)
使标记分别对plt.plot或plt.scatter不透明
plt.plot
plt.scatter
请注意,在plt.plot上简单地使用lh.set_alpha(1)将使图例中的线条不透明,而不是标记。您应该能够为其他打印类型调整这两种可能性
lh.set_alpha(1)
资料来源: 由一些good advice由DrV合成,关于标记大小。更新的灵感来自Owen的有用评论
根据cosmosis的回答,要使图例的“假”线在绘图中不可见,您可以使用NaN,它们仍然可以用于生成图例条目:
import numpy as np import matplotlib.pyplot as plt # Plot data with alpha=0.2 plt.plot((0,1), (0,1), marker = 'x', color=[1, 0, 0, .2]) # Plot non-displayed NaN line for legend, leave alpha at default of 1.0 legend_line_1 = plt.plot( np.NaN, np.NaN, marker = 'x', color=[1, 0, 0], label='Data Series' ) plt.legend()
如果希望在图例中具有特定的内容,则可以更轻松地使用适当的文本定义放置在图例中的对象。例如:
import matplotlib.pyplot as plt import pylab plt.plot_date( x = xaxis, y = yaxis, marker = 'x', color=[1, 0, 0, .2], label='Data Series' ) line1 = pylab.Line2D(range(1),range(1),color='white',marker='x',markersize=10, markerfacecolor="red",alpha=1.0) line2 = pylab.Line2D(range(10),range(10),marker="_",linewidth=3.0,color="dodgerblue",alpha=1.0) plt.legend((line1,line2),('Text','Other Text'),numpoints=1,loc=1)
在这里,line1定义了一条短白线(基本上不可见),标记“x”为红色,完全不透明度。例如,line2为您提供了一条没有可见标记的较长的蓝线。通过创建此“线”,您可以更轻松地在图例中控制其属性
更新: 有一个更简单的方法!首先,在创建变量时将图例指定给变量:
然后:
或者,如果上述方法不起作用(您可能正在使用较旧版本的
matplotlib
):使标记分别对
plt.plot
或plt.scatter
不透明请注意,在
plt.plot
上简单地使用lh.set_alpha(1)
将使图例中的线条不透明,而不是标记。您应该能够为其他打印类型调整这两种可能性资料来源: 由一些good advice由DrV合成,关于标记大小。更新的灵感来自Owen的有用评论
根据cosmosis的回答,要使图例的“假”线在绘图中不可见,您可以使用NaN,它们仍然可以用于生成图例条目:
如果希望在图例中具有特定的内容,则可以更轻松地使用适当的文本定义放置在图例中的对象。例如:
在这里,line1定义了一条短白线(基本上不可见),标记“x”为红色,完全不透明度。例如,line2为您提供了一条没有可见标记的较长的蓝线。通过创建此“线”,您可以更轻松地在图例中控制其属性
相关问题 更多 >
编程相关推荐