'PlotLegend' n'affiche pas la couleur de symbole correcte

Oct 15 2020

Je trace des points de données avec une légende mais je PlotLegendne donne pas la même couleur que les points. Où est l'erreur?

Voici le résultat que j'obtiens: [1]: https://i.stack.imgur.com/s5yga.png

ListPlot[{{0.4, 38}, {0.5,   15}, {0.6, 10}},
 Frame -> True,
 FrameLabel -> {"a", "b"},
 PlotMarkers -> {
   Graphics[{EdgeForm[Directive[Thick, Blue]], White, Rectangle[]},ImageSize -> (15)]},
  PlotRange -> {{0.3, 0.7}, {0, 100}},
 PlotRangePadding -> {0.05, 2},
 PlotLegends -> 
  Placed[PointLegend[{"data"}, LegendMarkerSize -> 14, 
    LabelStyle -> {FontSize -> 18, FontFamily -> "Arial", 
      Black}], {0.165, 0.215}]]


 

Réponses

4 kglr Oct 15 2020 at 19:10

Les bords grisâtres des marqueurs de légende sont dus au paramètre par défaut:

Legending`LegendDump`$DefaultMarkerStyle
EdgeForm[Directive[Opacity[0.3`], GrayLevel[0]]]

Vous pouvez résoudre le problème de trois manières différentes:

1. Utilisez EdgeForm[Directive[Thick, Opacity[1], Blue]]au lieu de EdgeForm[Directive[Thick, Blue]]pour obtenir

2. Ajoutez l'option BaseStyle -> EdgeForm[Opacity[1]]à PointLegend:

ListPlot[{{0.4, 38}, {0.5, 15}, {0.6, 10}}, Frame -> True, 
 FrameLabel -> {"a", "b"}, 
 PlotMarkers -> {Graphics[{EdgeForm[Directive[Thick, Blue]], White, 
     Rectangle[]}, ImageSize -> (15)]}, 
 PlotRange -> {{0.3, 0.7}, {0, 100}}, PlotRangePadding -> {0.05, 2}, 
 PlotLegends -> 
  Placed[PointLegend[{"data"}, BaseStyle -> EdgeForm[Opacity[1]], 
    LegendMarkerSize -> 14, 
    LabelStyle -> {FontSize -> 18, FontFamily -> "Arial", 
      Black}], {0.165, 0.215}]]

3. Définissez la valeur de Legending`LegendDump`$DefaultMarkerStylesur Opacity[1]:

Legending`LegendDump`$DefaultMarkerStyle = Opacity[1]

ListPlot[{{0.4, 38}, {0.5, 15}, {0.6, 10}}, Frame -> True, 
 FrameLabel -> {"a", "b"}, 
 PlotMarkers -> {Graphics[{EdgeForm[Directive[Thick, Blue]], White, 
     Rectangle[]}, ImageSize -> (15)]}, 
 PlotRange -> {{0.3, 0.7}, {0, 100}}, PlotRangePadding -> {0.05, 2}, 
 PlotLegends -> 
  Placed[PointLegend[{"data"}, LegendMarkerSize -> 14, 
    LabelStyle -> {FontSize -> 18, FontFamily -> "Arial", 
      Black}], {0.165, 0.215}]]