3

次の問題があります。チャートで作業する必要があるカスタム アイコンについての情報を得るために、カスタム アイテムをradar chartに追加しようとしています。extjs

レーダーチャートは正常に機能し、シリーズに追加するだけで凡例のアイテムを取得しましたが、追加された値がないため、コンソールにエラーが表示されます。値がありません。

私が探しているのは、基本的に、対話不可能な追加の凡例項目を追加する方法です (onclick、hover などはありません)。

これは可能ですか?

4

1 に答える 1

4

これを実現する最善の方法は、 の独自の拡張 (またはオーバーライド) を定義することですExt.chart.LegendItemExt.chart.Legend次に、カスタムの Legend Item を使用するために拡張 (またはオーバーライド) する必要があります。

面倒なことをすべてやりたくない場合は、フィールドをストアに追加して (データがなくても)、シリーズをグラフに追加することで、凡例項目を追加することができました。エラーは発生していませんが、あなたがやろうとしたことと似ています。このフィドルを参照してください。

var store = Ext.create('Ext.data.JsonStore', {
    fields: ['name', 'data1', 'data2', 'data3', 'data4'],
    data: [
        { 'name': 'metric one',   'data1': 14, 'data2': 12, 'data3': 13 },
        { 'name': 'metric two',   'data1': 16, 'data2':  8, 'data3':  3 },
        { 'name': 'metric three', 'data1': 14, 'data2':  2, 'data3':  7 },
        { 'name': 'metric four',  'data1':  6, 'data2': 14, 'data3': 23 },
        { 'name': 'metric five',  'data1': 36, 'data2': 38, 'data3': 33 }
    ]
});

Ext.create('Ext.chart.Chart', {
    renderTo: Ext.getBody(),
    width: 500,
    height: 300,
    animate: true,
    theme:'Category2',
    store: store,
    legend: {
        position: 'top'
    },
    axes: [{
        type: 'Radial',
        position: 'radial',
        label: {
            display: true
        }
    }],
    series: [{
        type: 'radar',
        xField: 'name',
        yField: 'data1',
        showInLegend: true,
        showMarkers: true,
        markerConfig: {
            radius: 5,
            size: 5
        },
        style: {
            'stroke-width': 2,
            fill: 'none'
        }
    },{
        type: 'radar',
        xField: 'name',
        yField: 'data2',
        showMarkers: true,
        showInLegend: true,
        markerConfig: {
            radius: 5,
            size: 5
        },
        style: {
            'stroke-width': 2,
            fill: 'none'
        }
    },{
        type: 'radar',
        xField: 'name',
        yField: 'data3',
        showMarkers: true,
        showInLegend: true,
        markerConfig: {
            radius: 5,
            size: 5
        },
        style: {
            'stroke-width': 2,
            fill: 'none'
        }
    },{
        type: 'radar',
        xField: 'name',
        yField: 'data4',
        showMarkers: false,
        showInLegend: true,
        markerConfig: {
            radius: 5,
            size: 5
        },
        style: {
            'stroke-width': 2,
            fill: 'none'
        }
    }]
});
于 2013-09-09T13:26:14.710 に答える