我正在尝试完全控制 Windrose 中的传奇;图例由 bin 控制,可以使用ax.info['bins']
. 但是,我想更改 bin 组的名称。
在网上看了一下,我找到的唯一解决方案是编辑windrose的.py文件,编辑它,然后重新导入到python脚本中。
我一直在寻找一种更简单的方法,因为我计划为脚本中的各种绘图设置不同的 bin。到目前为止,我已经尝试过label
,set_label
但似乎不起作用。
我正在尝试完全控制 Windrose 中的传奇;图例由 bin 控制,可以使用ax.info['bins']
. 但是,我想更改 bin 组的名称。
在网上看了一下,我找到的唯一解决方案是编辑windrose的.py文件,编辑它,然后重新导入到python脚本中。
我一直在寻找一种更简单的方法,因为我计划为脚本中的各种绘图设置不同的 bin。到目前为止,我已经尝试过label
,set_label
但似乎不起作用。
通过在 ax.set_legend 中添加标签参数并更改脚本以接受该参数。我还添加了一个小验证,在标签与句柄不匹配的情况下显示错误。
ax.set_legend(labels = ['T', 'S', 'M'], title="Failure Mode", loc="upper left")
def get_labels(labels, decimal_places=1):
_decimal_places = str(decimal_places)
fmt = (
"[%." + _decimal_places + "f " +
": %0." + _decimal_places + "f"
)
if labels is None:
labels = np.copy(self._info['bins'])
if locale.getlocale()[0] in ['fr_FR']:
fmt += '['
else:
fmt += ')'
labels = [fmt % (labels[i], labels[i + 1])
for i in range(len(labels) - 1)]
else:
if len(labels) != len(self._info['bins']) -1 :
print("ERROR")
labels = labels
return labels
kwargs.pop('handles', None)
decimal_places = kwargs.pop('decimal_places', 1)
labels = kwargs.pop('labels', None)
handles = get_handles()
labels = get_labels(labels, decimal_places)
self.legend_ = mpl.legend.Legend(self, handles, labels, loc, **kwargs)
return self.legend_
更多信息:Github 问题解决方案