Tag Info

Hot answers tagged

31

Use the individual legends as tick labels: dates = Through[{First, Last}@#] & /@ res {{1769, 1821}, {1775, 1817}, {1770, 1831}, {1818, 1883}, {1777, 1855}, {1766, 1817}, {1870, 1924}} names={"Napoleon Bonaparte", "Jane Austen", "Hegel", "Marx", "Gauss", "Madame de Stael", "Lenin"}; llpd = MapIndexed[Thread@{#, First@#2} &, dates]; legends ...


17

Bob Hanlon's answer works very well, but in some ways it is the hard way of doing things. If you have v9 or v10, then it is arguably easier to use the legend constructs within it. Similar to his answer, we get the image and element names: img = Import["ExampleData/1PPT.pdb", "Rendering" -> "BallAndStick", ImageSize -> 500]; elements = ...


17

We may observe that the automatically generated legend limits the number of legend items to the number of available colors in the given color scheme. Using this utility function: plot[scheme_] := Plot[Evaluate[Range[20] + x], {x, -5, 5}, PlotLegends -> "Expressions", PlotStyle -> scheme] Observe the result for indexed color scheme #42 which has ...


12

Two work-arounds: (1) Use TickLabels BarLegend[{"Rainbow", {-0.015, 0.015}}, ImageSize->300, Charting`TickLabels -> (Style[NumberForm[#, {Infinity, 3}],Bold,Black,12] & /@ Range[-.015, .015, .005])] (2) Use LabelingFunction: BarLegend[{"Rainbow", {-0.015, 0.015}}, ImageSize->300, LabelingFunction -> (Style[NumberForm[#, ...


12

This is an intentional change to make PlotLegends -> "Expressions" more consistent with PlotLegends -> Automatic. Both now do not produce legends when only one line is present. What you are looking for is PlotLegends -> "AllExpressions" which has the old behavior, e.g. Plot[x, {x, 0, 1}, PlotLegends -> "AllExpressions"] More generally, ...


11

bas = Import["ExampleData/1PPT.pdb", "Rendering" -> "BallAndStick", ImageSize -> 500]; elements = Import["ExampleData/1PPT.pdb", "ResidueAtoms"] // Flatten // Union; legend = GraphicsColumn[{ {Graphics[{#[[1]], Disk[{0, 0}, 1]}, ImageSize -> 10], #[[2]]} & /@ Thread[{ ElementData[#, "IconColor"] & /@ elements, ...


11

You have to add the index for the colors to LineLegend Legended[Grid[{{Show[oniplot], Show[cpplot]}}], LineLegend[97, {"factor = 2", "factor = 3", "factor = 4", "factor = 5"}]] In order to have the legend above the plots and with markers: Legended[GraphicsGrid[{{oniplot, cpplot}}], Placed[LineLegend[97, Array["factor = " <> ToString@# ...


10

ListPlot[Table[f, {f, {Sin[x], Cos[x]}}, {x, 0, 2 π, 0.1}], PlotLegends ->PointLegend[ (Style[#, 40] & /@ {"sin(x)", "cos(x)"}),Alignment->Center]] Update: As noted by rcollyer in the comments Alignment is an undocumented option for PointLegend. As an alternative, the following old Pane trick works without relying on an undocumented option: ...


9

`AbsoluteThickne is another useful approach:e.g. op = Table[AbsoluteThickness[2], {3}]; leg = LineLegend[Automatic, {"Max", "Mea", "Min"}]; ListLinePlot[{historyobjetivomejor, historyobjetivomedia, historyobjetivopeor}, AxesLabel -> {"Generacion", "Objetivo"}, PlotStyle -> op, PlotLegends -> leg] Varying thickness: using: Manipulate[ ...


9

The following works in both v9 and v10: style = Directive[Thick, Black]; ContourPlot[y - x^2, {x, 0, 1}, {y, 0, 1}, ContourStyle -> Directive[Thick, Black, Opacity[1]], FrameStyle -> style, PlotLegends -> BarLegend[Automatic, Method -> {FrameStyle -> style}]] The idea to use the (undocumented) Method option comes from inspecting the ...


8

After a rather long debugging session in our chat we could determine the reason of the problem and come up with a workaround. In short, we first tried whether the issue appears for the most basic Graphics[], which it didn't. As it turned out the gray background is introduced by using PlotLegends as in the example above. We went further by comparing ...


7

As it often happens, when I was researching for writing a fine question I also digged through the documentation and found the answer. There is an option LegendMarkerkSize which in my opinion has an unintuitive name in the case of the BarLegend. Anyway it is exactly meant to do what I needed: testPlot = ArrayPlot[ Array[RandomInteger[100] &, {100, ...


7

f@x_ := ColorData["VisibleSpectrum"][Rescale[x, {0, 1}, {380, 750}]]; Plot3D[ Exp[-x^2 - y^2], {x, -2, 2}, {y, -2, 2}, ColorFunction -> f, PlotLegends -> BarLegend[{f@# &, {0, 1}}]]


7

points = Table[{x, .5 x^2 - 3 + RandomReal[]}, {x, -3, 3}]; Show[{ListPlot[points, PlotLegends -> {"Experiment"}], Plot[{.5 x^2 - 3}, {x, -3, 3}, PlotStyle -> Red, PlotLegends -> {"Model"}]}]


7

I believe this can be considered a bug, but it is also related to the (IMHO) non-bug behavior of automatic styling described in PlotLegends won't generate automatically more than 15 labels in v10. We see that if we use PlotLegends -> Automatic the number of legends is limited to the number of styles: ListPlot[Table[{j, i}, {i, Range[20]}, {j, ...


7

There is an undocumented form of LegendLayout that is useful here: LegendLayout -> {"Column", noOfColumns} similarly for "Row" and their reversed cousins. So, in your case I would use LegendLayout -> {"Column", 2} giving Obviously, you do not have to include the color list when you pass it to PlotLegends.


7

Using either Swatchlegend, PointLegend, LineLegend, Barlegend you can easily generate a legend like you would get in a plot. SwatchLegend[{Red, Green, Blue}, {"red", "green", "blue"}] PointLegend[{Red, Green, Blue}, {"red", "green", "blue"}] LineLegend[{Red, Green, Blue}, {"red", "green", "blue"}] BarLegend["Rainbow"] Non-default styles are ...


6

In version 10 the PointSize of the legend will automatically match the PointSize of the Plot: ListPlot[Table[RandomReal[NormalDistribution[], {20, 2}], {2}], PlotLegends -> {"a", "b"}, PlotStyle -> PointSize[0.02]] Edit: The answer by @eldo made me realize, that this is only true up to a PointSize that is equal to the default ...


6

I always do it like this: cm = 72/2.54; BarChart[{{1, 2, 3}, {1, 3, 2}}, ChartLegends -> SwatchLegend[{"a", "b", "c"}, LegendMarkerSize -> 20], ImageSize -> 4 cm] top: code from your question, bottom: this code The colors of the legend are inherited from the BarChart object: BarChart[{{1, 2, 3}, {1, 3, 2}}, ChartStyle -> {Red, Green, ...


6

For ChartLegends, although the documentation does not mention any values other than "Row" and "Column" for the option LegendAppearance, it turns out you can also use this option to set the LegendMarkerSize BarChart[{{1, 2, 3}, {1, 3, 2}}, ChartStyle -> {Red, Green, Blue}, LegendAppearance -> {LegendMarkerSize -> 20}, ChartLegends -> {"a", ...


6

A reasonable workaround is to use SwatchLegend with LegendMarkers set: ListPlot[ Table[f, {f, {Sin[x], Cos[x]}}, {x, 0, 2 π, 0.1}], PlotLegends -> SwatchLegend[{"sin(x)", "cos(x)"}, LabelStyle -> 40, LegendMarkers -> "Bubble" ] ]


6

Borrowing from kguler the legends legends = MapIndexed[ SwatchLegend[{ColorData[{"Rainbow", {1, 7}}][## & @@ #2]}, {#}, LegendMarkerSize -> {{10, 10}}] &, names]; p1 = ListLinePlot[par, ColorFunction -> "Rainbow", Ticks -> {Range[1750, 1980, 10], Automatic}, PlotRangePadding -> {{5, 50}, {0, 1}}, GridLines -> ...


6

This is a variation of Plot draws list of curves in same color when not using Evaluate. By using /. the head of the first argument is ReplaceAll rather than a List, and the styling subroutine of ParametricPlot does not know what to do with it. Make the substitutions part of the definitions and you get this: N1[a_] := (4 d)/(π a) ...


6

You should use built-in option PlotLegends now (note the s in the end). From MathGroup archive: WRI forgot to change the documentation PlotLegends/guide/PlotLegendsPackage so as to say it's obsolete and to refer to the new PlotLegends built into the kernel.


6

First, a function to produce dots to be used as filling: dotsF[n_: {50, 50}, sz_: Medium, clr_: LightGray] := With[{g = Tuples[{Range[n[[1]]], Range[n[[2]]]}]}, Graphics[{clr, PointSize[sz], Point@g}, ImagePadding -> 0, PlotRangeClipping -> False, PlotRangePadding -> 0, AspectRatio -> 1]] dotsF[{10, 10}, .1, Green] It will be more ...


6

Update: Generate a separate legend with the default color scheme and export it: lineleg = LineLegend["DefaultPlotStyle"/. (Method/. Charting`ResolvePlotTheme[Automatic, ListLinePlot]), {"leg1", "leg2", "leg3"}]; Export["plotlegend.pdf",lineleg] To get the default colors associated with various PlotThemes you can use the function ...


5

I am continuing to explore this as I can't yet demonstrate exactly what is going on, but first note that ArrayPlot does not experience this problem: tab = Table[Exp[-((i - 25)^2 + (j - 25)^2)], {i, 50}, {j, 50}]; ArrayPlot[500 * tab, PlotLegends -> Automatic, ColorFunction -> "ThermometerColors"] Note that I multiplied the original table by 500 ...


5

This is straightforward. All of the legend functions accept the generic, top level arguments, e.g. LineLegend[Automatic] which allows you to modify the behavior. So, you would use BarLegend[Automatic, LabelStyle -> {FontSize -> 20}].


5

I was able to isolate the problem with BarLegend in v.10.0.0. Yes, it is clearly a bug. Let us see the how the thin grey lines are implemented: Cases[ ToBoxes[BarLegend[{"DeepSeaColors", {0, 1}}, LegendLayout -> "ReversedColumn"]], _LineBox, Infinity] {LineBox[ NCache[{{-(15/2), 225/2}, {15/2, 225/2}, {15/ 2, -(225/2)}, {-(15/2), ...


5

If it is to be printed and you have space (say, a page), then a grid can be effective, where each dataset is plotted in a highlight color over a monochromatic plot of all datasets: maxmin = {Min /@ Transpose[data], Max /@ Transpose[data]}; background = ListLinePlot[Join[maxmin, data], PlotStyle -> Directive[Thin, Gray], Filling -> {1 -> ...



Only top voted, non community-wiki answers of a minimum length are eligible