Finding the best way to visualize rather complicated data
None of the solutions so far makes use of the fact that the data are percentages and hence add op to (nearly) 100.
(* Add the rows of the data list *)
Total[Rest /@ data, {2}]
(* out *)
{99.96, 99.98, 99.98, 99.99, 99.99, 99.99, 99.99, 99.97, 100., 99.99,100., 100.}
Borrowing from Pinguin Dirk:
BarChart[Rest /@ data
,ChartLayout -> "Stacked"
,ChartLabels -> {data[[All, 1]], None}
,ImageSize -> Large
]
One More way! The means of each data is the blue dot. bars are color coded according to the standard deviation within each sub list.
ListLinePlot[Mean /@ data,
Prolog ->
MapThread[{Thickness[.04], ColorData["SandyTerrain"][#3],
Line[{{#2, First@#1}, {#2, Last@#1}}], Opacity[0.7], White,
Dashed, Thickness[0.003], Arrowheads[0.025],
Arrow[{{#2, First@#1}, {#2, Last@#1}}]} &, {{Min@#, Max@#} & /@
data, Range[Length@data], Normalize[StandardDeviation /@ data]}],
PlotLegends ->
Placed[BarLegend[{"SandyTerrain", {Min@#,
Max@#} &@(StandardDeviation /@ data)},
StandardDeviation /@ data, LegendMarkerSize -> 310,
LegendFunction -> (Framed[#, RoundingRadius -> 3] &),
LegendLabel -> Style["Stan. Dev.", Gray, FontSize -> 14]], {After,
Top}],
PlotRange -> {{0.5, 1 + Max[Length@data]}, {0.9 Min@data,
1.05 Max@data}},
PlotStyle -> Red,
MeshStyle -> {{Opacity[.7], Blue, PointSize[0.015]}},
Frame -> True, Mesh -> All, ImageSize -> 600 , Axes -> None,
FrameStyle -> Directive[FontSize -> 14],
FrameLabel -> {"i-th data", "min to max arrow"}]
Out of curiosity I tried this:
DistributionChart[Rest /@ data,
ChartLabels -> {data[[All, 1]]},
ChartElementFunction -> "HistogramDensity",
ChartStyle -> {LightRed, LightGreen, LightBlue},
BarOrigin -> Left]
As for 'interpretation', here's my attempt.
This type of chart tries to show the distribution of the values in each 'row'. The height of each box is the number of elements that are considered to be 'grouped'. It might be easier to understand using some of the other options. For example:
DistributionChart[Rest /@ data, ChartLabels -> {data[[All, 1]]},
ChartStyle -> {Directive[
EdgeForm[None]], {Directive[Darker@Cyan]}},
ChartElementFunction ->
ChartElementData["PointDensity", PointSize -> 9], BarOrigin -> Bottom,
ImageSize -> 550]
With the "PointDensity" option, you can see that it's trying to show the changing distribution by varying the color intensity of the background, with the data points plotted (very small) in black. Perhaps the effect is too subtle to be generally useful...
As with most Mathematica functions, there's enough flexibility built-in to allow any amount of specialized graphical treatments:
f[{{xmin_, xmax_}, {ymin_, ymax_}}, metadata___] :=
{ Opacity[1],
Gray,
Line[{{(xmin + xmax)/2, ymin}, {(xmin + xmax)/2, ymax}}],
Opacity[0.25],
Darker@Green,
EdgeForm[],
Disk[{(xmin + xmax)/2, #}, .15] & /@ metadata
}
DistributionChart[Rest /@ data,
ChartLabels -> {data[[All, 1]]},
ChartElementFunction -> f,
BarOrigin -> Bottom,
ImageSize -> 550]