6

積み上げ棒グラフの色の垂直方向の配置を、グラフの凡例の色の配置と一致させたいです。しかし、私が何をしようとしても、それらは一致しません。これが状況です

BarChart[{{5, 37, 56}, {22, 49, 28}, {31, 60, 10}},
   ChartLayout -> "Percentile",
   ChartLegends -> Placed[{"1-Volume", "2-Area", "3-Length"}, Right],
   ChartLabels -> {{"Before", "During", "After"}, None}]

チャート1

実際の例では、凡例にはさらに多くのエントリ(6)があるため、凡例の色の順序がバーの順序と一致していると便利です。ChartLegendsで表示するように設定できることはわかりましBottomたが、凡例のエントリが多いため、見栄えがよくありません。

また、凡例リストを逆にすると、期待どおりに機能しません。凡例のテキストは並べ替えられましたが、色は並べ替えられなかったため(以下を参照)、凡例のキャプションはグラフのデータと一致しなくなりました。

データ(またはデータと凡例項目)の順序を変更することもできません。

助言がありますか?

ここに画像の説明を入力してください

4

3 に答える 3

10
BarChart[{{5, 37, 56}, {22, 49, 28}, {31, 60, 10}}, 
  ChartLayout -> "Percentile", 
  ChartLegends -> {"1-Volume", "2-Area", "3-Length"}, 
  ChartLabels -> {{"Before", "During", "After"}, None}] /. 
 Column[List[a : Grid[List[___]] ..]] :> Column[Reverse@List@a]

ここに画像の説明を入力してください

編集

FullFormグラフィック/チャート/プロットの内部を台無しにしたいときに使用することを忘れないでください

于 2011-09-19T21:36:22.597 に答える
6

ベリサリウスによって与えられた良い答えに基づいて、Part

bc[[2,1,1,1]]= Reverse@bc[[2,1,1,1]];bc

これはFullForm

Position[bc, #, Infinity]& /@ {Framed[___],
Column[___],List[___,"1-Volume",___]}

またはこれらのいずれかから、おそらく、試行錯誤。

質問の一部ではありませんが、Simonのトリック(ここを参照)を使用して、凡例をさらに操作することができます。

bc/.Labeled[g_,Framed[leg_],pos_]:>
Labeled[g,Framed[leg,FrameStyle->Orange,RoundingRadius->10,
Background->LightYellow],pos]

たとえば、次のようになります。

ここに画像の説明を入力してください

Part凡例の周りのフレームを削除するために使用することもできますが(この質問を参照)、Simonの方法ははるかに用途が広いです。

bc[[2]]=bc[[2,1]];bc
于 2011-09-20T10:03:16.733 に答える
2

これに使用できますLegendContainer

SetOptions[Legending`GridLegend, 
  Legending`LegendContainer -> (Framed@MapAt[Reverse, #, {1, 1}] &)];

BarChart[{{5, 37, 56}, {22, 49, 28}, {31, 60, 10}}, 
 ChartLayout -> "Percentile", 
 ChartLegends -> {"1-Volume", "2-Area", "3-Length"}, 
 ChartLabels -> {{"Before", "During", "After"}, None}]

ベリサリウスのグラフと同じ

于 2011-10-19T00:35:17.630 に答える