2

ラベルは昇順フロートにする必要があるため、chaco Legend のライン ラベルを変更したいと思います。

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()

スクリーンショットを参照してください:

ここに画像の説明を入力

4

2 に答える 2

1

行を変更することで、1 桁の数字の先頭にゼロを追加できます

y = 'line_%s' % freq 

y = 'line_%02d' % freq

99 個以下のグラフがあると仮定します。それ以外の場合は、を に変更する必要があり02ます03。次に、凡例が正しくソートされるはずです。

文字列フォーマット指定子の詳細については、https://docs.python.org/3.4/library/string.html#format-specification-mini-languageを参照してください。

フォーマット0#where #is a number は、文字列内で数値が#位置を使用し、数値が指定された幅よりも小さい場合は後続ゼロで埋められることを意味します。小数部分として 1 桁の浮動小数点数が必要な場合は、%04.1f

于 2015-01-14T19:04:21.973 に答える