gpt4 book ai didi

python - Chaco Legend 中的自定义标签

转载 作者:太空宇宙 更新时间:2023-11-04 01:10:41 24 4
gpt4 key购买 nike

我想更改 chaco Legend 上的线条标签,因为我的标签需要是升序 float :

1,2,3,4

但它是字符串排序,所以我得到:

1, 10, 11, 2, 21  etc...

我注意到关于这个的文档似乎还没有完成:

http://chaco.readthedocs.org/en/latest/user_manual/basic_elements/overlays.html#legend

我试过手动设置图例标签:

self.plot.legend.labels = list([i for i in self.mylist]) 

我使用的是颜色图,所以这非常明显,因为图例显示了由于字符串排序而看似随机混合的蓝线和红线。

下面是一个最小的工作示例

此示例未使用我正在使用的相同颜色图,但显示了图例中的行顺序未排序的方式。使用哪个颜色图并不重要,重要的是图例中的字符串排序给出了不需要的美感。

from traits.api import *
from chaco.api import *
from traitsui.api import *
from chaco.example_support import COLOR_PALETTE
from enable.api import ComponentEditor
import numpy as np


class TestPlot(HasTraits):

plot = Instance(Plot)

traits_view = View( Item('plot', editor=ComponentEditor(), show_label=False) )

def _plot_default(self):
data = ArrayPlotData()
plot = Plot(data)

x = np.linspace(0,10,100)
data.set_data('x', x)

for i, freq in enumerate(range(1,20,3)):
y = 'line_%s' % freq
color = tuple(COLOR_PALETTE[i])
data.set_data(y, i*x)
plot.plot(('x', y), name=y, color=color)

plot.legend.visible = True


return plot


if __name__ == '__main__':
TestPlot().configure_traits()

看截图:

enter image description here

最佳答案

要正确排序标签,您只需应用自然排序。安装“natsort”库并在代码中插入两行:

from natsort import natsorted
...
plot.legend.labels = natsorted(plot.plots.keys())

这样就可以了。

关于python - Chaco Legend 中的自定义标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27908032/

24 4 0