# How to draw ranges in a plot?

I wanna do some plot but I do not know what Mathematica function is best. I wanna draw a 2D plot. Per point in the x Axis I wanna draw ranges, like in the picture I attach You might think about adding error plots, but I do not have central values. These are not errors. I just want the ranges. How is this best implemented?

• Graphics, Line together with a List of coordinates. – Αλέξανδρος Ζεγγ Jun 25 '18 at 10:40

ranges = RandomReal[10, {10, 2}];
ListPlot[Transpose[ranges],
Filling -> {1 -> {{2}, Directive[Thick, Red]}},
PlotStyle -> None] if I want the bars to be located at x=1,5,7,12,20,22,30,39,49,51

To specify horizontal coordinates, you can use

ranges = RandomReal[10, {10, 2}];
xvalues = {1, 5, 7, 12, 20, 22, 30, 39, 49, 51};
Filling -> {1 -> {{2}, Directive[Thick, Red]}}, PlotStyle -> None] You can also do it without the Filling option:

ListLinePlot[Thread /@ Transpose[{xvalues, ranges}],
PlotStyle -> Directive[Red, Thick]]


same picture

Alternatively, you can use Graphics:

Graphics[{Thick, Red, Line[Thread /@ Transpose[{xvalues, ranges}]]},
Axes -> True, AxesOrigin -> {0, 0}, AspectRatio -> 1 / GoldenRatio]


same picture

• kglr , I will like to know which version of Methemetica are you using, I Have 11.1.0 and if copy and paste your solution I have not any plot only axes, If I remove PlotStyle -> None I get the lines with dots blue and red on both extremes of lines. – Anxon Pués Jun 25 '18 at 12:10
• @AnxonPués, I am using v9. I updated with a variant the works both in version 11.3 and version 9. – kglr Jun 25 '18 at 12:14
• thanks it's ok now, I learn with your solutions – Anxon Pués Jun 25 '18 at 12:24
• Thanks! this works. Nonetheless, if I wanna specify the position of the x axis , what is the proper syntax? For instance, In your example, if I want the bars to be located at x=1,5,7,12,20,22,30,39,49,51 ? – PhoenixPerson Jun 25 '18 at 12:25
• @PhoenixPerson, please see the update – kglr Jun 25 '18 at 13:08

Here is @kglr's idea but different set up.

ranges1 = RandomReal[10, 10];
ranges2 = RandomReal[10, 10];
ListPlot[{ranges1, ranges2},
Filling -> {1 -> {{2}, Directive[Thick, Red]}}, PlotStyle -> None] xvalues = {1, 5, 7, 12, 20, 22, 30, 39, 49, 51};
ranges1 = Transpose@{xvalues, RandomReal[10, 10]};
ranges2 = Transpose@{xvalues, RandomReal[10, 10]};
ListPlot[{ranges1, ranges2},
Filling -> {1 -> {{2}, Directive[Thick, Red]}}, PlotStyle -> None] Take a look at ErrorListPlot and ErrorBar. ErrorListPlot takes the same options as ListPlot so you can customize is as you want.

load the ErrorBar Plotting Package first

Needs["ErrorBarPlots"]

ErrorListPlot[{{2, 0.4}, {1, 0.4}, {3, 0.4}},
PlotRange -> {{0, 4}, {0, 4}}] The same result with the different syntax:

ErrorListPlot[{{{1, 2}, ErrorBar[0.4]}, {{2, 1},
ErrorBar[0.4]}, {{3, 3}, ErrorBar[0.4]}},
PlotRange -> {{0, 4}, {0, 4}}] • ErrorBar is not needed: ErrorListPlot[{{1, 2, 0.4}, {2, 1, 0.4}, {3, 3, 0.4}}, PlotRange -> {{0, 4}, {0, 4}}]. – corey979 Jun 25 '18 at 21:35

Generally, for plots of this type, for readers of the chart that understand statistics, they would prefer you use the BoxWhiskerChart command, to embed some of the statistics of the data in the plots.

Here's the example from the manual page for BoxWhiskerChart:

In:=  data = Table[RandomVariate[NormalDistribution[\[Mu], 1], 100], {\[Mu], {0, 3, 2, 5}}];

In:= BoxWhiskerChart[data]
` 