Kann der Rahmenrand einer BarChart-Legende entfernt werden?

7

Ich erstelle in Mathematica eine Anwendung für verschiedene Plot- / Diagrammzeichnungen. Letztendlich wird es eine GUI haben, aber der erste Schritt ist es, den Code richtig zu machen und einfach genug für eine GUI zu verwalten. Ich habe Schwierigkeiten, die Legenden so einzustellen, dass sie keinen Rahmen haben.

Hier ist ein minimales Beispiel (mit einigen Optionen für BarChart bereits angepasst mit SetOptions .

%Vor%

Und hier ist was ich bekomme:

Versuchen Sie, wie ich könnte, ich werde diese Grenze um die Legende nicht los. Sie können sehen, dass LegendAppearance nichts tut - ich habe auch ein paar andere Ansätze ausprobiert.

Ich bin zurückhaltend, kleine Rechtecke von Hand zu kodieren, weil es sehr schwierig sein wird, in der eventuellen GUI richtig zu kommen. ChartLabels wird auch nicht funktionieren, da dies bereits für Datumsbezeichnungen in der realen Version des Diagramms verwendet wird.

Hat jemand irgendwelche Vorschläge?

    
Verbeia 16.08.2011, 06:06
quelle

3 Antworten

8

Sie können den Frame vorübergehend global beenden, indem Sie Folgendes setzen:

%Vor%

Um das Standardverhalten wiederherzustellen, setzen Sie:

%Vor%     
Mr.Wizard 16.08.2011, 15:12
quelle
10

Ich kann keine Optionen finden, um den Rahmen auszuschalten. Die Dokumentation für LegendAppearance ist ziemlich minimal und das Styling von Legenden im Allgemeinen wird nicht viel diskutiert (siehe [ 2 ] und Links innerhalb).

Die einfachste Lösung, die ich mir vorstellen kann, ist die manuelle Änderung der Grafik. Charts mit Legenden produzieren beschriftete Grafikobjekte. Für eine einzelne Legende sieht das erzeugte Labeled -Objekt wie Labeled[Graphics[...], Framed[...], pos] aus. Sie müssen also nur den Framed -Teil entfernen. Dies könnte getan werden, indem man alle Framed heads mit einem ReplaceAll (z. B. BarChart[...] /. Framed -> Identity ) entfernt, aber vielleicht wäre etwas gezielter sicherer.

%Vor%

%Vor%

Das obige könnte auch mit Replace[bc, Framed[leg_] :> leg, {1}] oder MapAt[Apply[Identity, #] &, bc, 2] oder ähnlichen Konstruktionen erzeugt werden. Es würde nicht viel brauchen, um den Code zu ändern, wenn Sie mehr Beschriftungen oder andere Arten von Grafikobjekten haben.

    
Simon 16.08.2011 07:44
quelle
3

Nicht so vielseitig wie Simon Methode oben , aber dennoch möglicherweise einen Beitrag wert. (Ich fand das beim Lesen von dieser Frage) heraus.

Verwendung von Part , wobei bc wie in Simon's definiert ist Antwort :

%Vor%

geben

    
tomd 20.09.2011 10:20
quelle