I need to make a good bar chart based on the table below (the number of nodes with its probability of falling correspond to each OF):
Thanks to kglr I got the necessary BarChart:
data14GAOF = {{33/36, 3/36}, {11/36, 25/36}, {27/36, 8/36,
1/36}, {14/36, 22/36}, {13/36, 10/36, 2/36, 1/36, 1/36, 1/36,
2/36, 4/36, 1/36, 1/36}, {8/36, 16/36, 8/36, 4/36}};
labels14GAOF =
Style[#, FontSize -> 18, White] & /@ {"node 4", "node 9", "node 7",
"node 3", "node 5", "node 6", "node 8", "node 10", "node 11",
"node 13"};
grouplabels14GAOF =
Style[#, Black, Bold, FontSize -> 18] & /@ {"OF1(N-1)", "OF1",
"OF2(N-1)", "OF2", "OF3(N-1)", "OF3"};
labeleddata14GAOF =
Labeled[##, Axis] & @@@
Transpose[{SortBy[-First[#] &] /@ (MapIndexed[
Labeled[#, labels14GAOF[[#2[[1]]]], Center] &, #] & /@
data14GAOF), grouplabels14GAOF}];
BarChart[labeleddata14GAOF,
ChartStyle -> {GrayLevel[0.1], GrayLevel[0.2], GrayLevel[0.3],
GrayLevel[0.4], GrayLevel[0.5], GrayLevel[0.6], GrayLevel[0.65],
GrayLevel[0.7], GrayLevel[0.75], GrayLevel[0.8],},
ChartLayout -> "Stacked", ImageSize -> 900,
AxesStyle -> Directive[Black, 24], BarSpacing -> {0, 0.8}]
But, unfortunately, I didn't take something into account and, as a result, BarChart looks like (there is a mismatch in the last column which I marked):
There is a strong likelihood that I chose inappropriate way to visualize and represent results.
Two questions
- What I have to do in order to get the right labels?
- How to make the columns closer to each other in accordance with the grouping (group OF1, group OF2, group OF3).
Thanks for help m_goldberg!
Following your advice I tried to add my barchart:
data14GA = {{33/36, 3/36}, {11/36, 25/36}, {27/36, 1/36,
8/36}, {14/36, 22/36}, {1/36, 13/36, 1/36, 1/36, 2/36, 2/36,
10/36, 4/36, 1/36, 1/36}, {8/36, 8/36, 16/36, 4/36}};
labels14GA = {{"node 4", "node 9"}, {"node 4", "node 9"}, {"node 4",
"node 7", "node 9"}, {"node 4", "node 9"}, {"node 3", "node 4",
"node 5", "node 6", "node 7", "node 8", "node 9", "node 10",
"node 11", "node 13"}, {"node 4", "node 5", "node 9", "node 11"}};
grouplabels14GA =
Style[#, Black, Bold, FontSize -> 18] & /@ {"OF1(N-1)", "OF1",
"OF2(N-1)", "OF2", "OF3(N-1)", "OF3"};
labeleddata14GA =
MapThread[
Labeled[#1, #2, Axis] &, {SortBy[-First[#] &] /@
Apply[Labeled[#1, Style[#2, FontSize -> 16, White], Center] &,
Transpose /@ Transpose[{data14GA, labels14GA}], {2}],
grouplabels14GA}];
data14MOPSO = {{60/80, 20/80}, {23/40, 17/40}, {74/80, 4/80,
2/80}, {16/40, 24/40}, {8/80, 4/80, 7/80, 24/80, 3/80, 16/80,
4/80, 2/80, 12/80}, {3/40, 4/40, 1/40, 6/40, 4/40, 1/40, 21/40}};
labels14MOPSO = {{"node 9", "node 4"}, {"node 4",
"node 9"}, {"node 9", "node 4", "node 7"}, {"node 4",
"node 9"}, {"node 9", "node 4", "node 7", "node 3", "node 5",
"node 10", "node 11", "node 13", "node 14"}, {"node 3", "node 4",
"node 5", "node 9", "node 10", "node 11", "node 14"}};
grouplabels14MOPSO =
Style[#, Black, Bold, FontSize -> 18] & /@ {"OF1(N-1)", "OF1",
"OF2(N-1)", "OF2", "OF3(N-1)", "OF3"};
labeleddata14MOPSO =
MapThread[
Labeled[#1, #2, Axis] &, {SortBy[-First[#] &] /@
Apply[Labeled[#1, Style[#2, FontSize -> 16, White], Center] &,
Transpose /@ Transpose[{data14MOPSO, labels14MOPSO}], {2}],
grouplabels14MOPSO}];
BarChart[{labeleddata14GA, labeleddata14MOPSO},
ChartStyle -> {GrayLevel[0.1], GrayLevel[0.2], GrayLevel[0.3],
GrayLevel[0.4], GrayLevel[0.5], GrayLevel[0.6], GrayLevel[0.65],
GrayLevel[0.7], GrayLevel[0.75], GrayLevel[0.8]},
ChartLayout -> "Stacked", AxesStyle -> Directive[Black, 24],
BarSpacing -> {Automatic, .3}, ImageSize -> 800]
But it turned out incorrect (problem with the Bar dataset) and I tried another way:
data14GAMOPSO = {{33/36, 3/36}, {11/36, 25/36}, {27/36, 1/36,
8/36}, {14/36, 22/36}, {1/36, 13/36, 1/36, 1/36, 2/36, 2/36,
10/36, 4/36, 1/36, 1/36}, {8/36, 8/36, 16/36, 4/36}, {60/80,
20/80}, {23/40, 17/40}, {74/80, 4/80, 2/80}, {16/40,
24/40}, {8/80, 4/80, 7/80, 24/80, 3/80, 16/80, 4/80, 2/80,
12/80}, {3/40, 4/40, 1/40, 6/40, 4/40, 1/40, 21/40}};
labels14GAMOPSO = {{"node 4", "node 9"}, {"node 4",
"node 9"}, {"node 4", "node 7", "node 9"}, {"node 4",
"node 9"}, {"node 3", "node 4", "node 5", "node 6", "node 7",
"node 8", "node 9", "node 10", "node 11", "node 13"}, {"node 4",
"node 5", "node 9", "node 11"}, {"node 9", "node 4"}, {"node 4",
"node 9"}, {"node 9", "node 4", "node 7"}, {"node 4",
"node 9"}, {"node 9", "node 4", "node 7", "node 3", "node 5",
"node 10", "node 11", "node 13", "node 14"}, {"node 3", "node 4",
"node 5", "node 9", "node 10", "node 11", "node 14"}};
grouplabels14GAMOPSO =
Style[#, Black, Bold, FontSize -> 18] & /@ {"OF1(N-1)", "OF1",
"OF2(N-1)", "OF2", "OF3(N-1)", "OF3", "OF1(N-1)", "OF1",
"OF2(N-1)", "OF2", "OF3(N-1)", "OF3"};
labeleddata14GAMOPSO =
MapThread[
Labeled[#1, #2, Axis] &, {SortBy[-First[#] &] /@
Apply[Labeled[#1, Style[#2, FontSize -> 16, White], Center] &,
Transpose /@ Transpose[{data14GAMOPSO, labels14GAMOPSO}], {2}],
grouplabels14GAMOPSO}];
BarChart[labeleddata14GAMOPSO,
ChartStyle -> {GrayLevel[0.1], GrayLevel[0.2], GrayLevel[0.3],
GrayLevel[0.4], GrayLevel[0.5], GrayLevel[0.6], GrayLevel[0.65],
GrayLevel[0.7], GrayLevel[0.75], GrayLevel[0.8]},
ChartLayout -> "Stacked", AxesStyle -> Directive[Black, 24],
BarSpacing -> {Automatic, .3}, ImageSize -> 1500]
It is correct but it would be better to sowehow group the columns. In other words to separate the columns [OF1(N-1)+OF1], [OF2(N-1)+OF2], [OF3(N-1)+OF3] from each other a bit because they represent different functions. Two questions:
- How it can be realised?
- Is it possible to make a space between groups of labeleddata14GA and labeleddata14MOPSO as well?