it-swarm.com.de

Bearbeiten von Beschriftungen für Legenden (Text) in ggplot

Ich habe stundenlang in der Dokumentation und auf StackOverflow gesucht, aber keine Lösung scheint mein Problem zu lösen. Bei Verwendung von ggplot kann ich in der Legende nicht den richtigen Text finden, obwohl er sich in meinem Datenframe befindet. Ich habe versucht scale_colour_manual, scale_fill_manual Mit unterschiedlichen Werten für labels= Wie c("T999", "T888")", "cols".

Hier ist mein Code:

T999 <- runif(10, 100, 200)
T888 <- runif(10, 200, 300)
TY <- runif(10, 20, 30)
df <- data.frame(T999, T888, TY)


ggplot(data = df, aes(x=T999, y=TY, pointtype="T999")) + 
       geom_point(size = 15, colour = "darkblue") + 
       geom_point(data = df, aes(x=T888, y=TY), colour = 'red', size = 10 ) + 
       theme(axis.text.x = element_text(size = 20), axis.title.x =element_text(size = 20),   axis.text.y = element_text(size = 20)) +
       xlab("Txxx") + ylab("TY [°C]") + labs(title="temperatures", size = 15) + 
       scale_colour_manual(labels = c("T999", "T888"), values = c("darkblue", "red")) +    theme(legend.position="topright")

Hilfe wäre sehr dankbar!

104
user3633161

Das erwähnte Tutorial @Henrik ist eine hervorragende Ressource, um zu lernen, wie man mit dem Paket ggplot2 Diagramme erstellt.

Ein Beispiel mit Ihren Daten:

# transforming the data from wide to long
library(reshape2)
dfm <- melt(df, id = "TY")

# creating a scatterplot
ggplot(data = dfm, aes(x = TY, y = value, color = variable)) + 
  geom_point(size=5) +
  labs(title = "Temperatures\n", x = "TY [°C]", y = "Txxx", color = "Legend Title\n") +
  scale_color_manual(labels = c("T999", "T888"), values = c("blue", "red")) +
  theme_bw() +
  theme(axis.text.x = element_text(size = 14), axis.title.x = element_text(size = 16),
        axis.text.y = element_text(size = 14), axis.title.y = element_text(size = 16),
        plot.title = element_text(size = 20, face = "bold", color = "darkgreen"))

das führt zu:

enter image description here

Wie in den Kommentaren von @ user2739472 erwähnt: Wenn Sie nur die Beschriftungen der Legenden und nicht die Farben aus der Standardpalette von ggplot ändern möchten, können Sie scale_color_hue(labels = c("T999", "T888")) anstelle von scale_color_manual() verwenden.

114
Jaap

Die Legendentitel können durch eine bestimmte Ästhetik gekennzeichnet werden.

Dies kann mit den Funktionen guides() oder labs() aus ggplot2 Erreicht werden (mehr hier und hier ). Mithilfe der ästhetischen Zuordnung können Sie Hilfslinien-/Legendeneigenschaften hinzufügen.

Hier ist ein Beispiel, das den Datensatz mtcars und labs() verwendet:

ggplot(mtcars, aes(x=mpg, y=disp, size=hp, col=as.factor(cyl), shape=as.factor(gear))) +
  geom_point() +
  labs(x="miles per gallon", y="displacement", size="horsepower", 
       col="# of cylinders", shape="# of gears")

enter image description here

Beantwortung der Frage des OP mit guides():

# transforming the data from wide to long
require(reshape2)
dfm <- melt(df, id="TY")

# creating a scatterplot
ggplot(data = dfm, aes(x=TY, y=value, color=variable)) + 
  geom_point(size=5) +
  labs(title="Temperatures\n", x="TY [°C]", y="Txxx") +
  scale_color_manual(labels = c("T999", "T888"), values = c("blue", "red")) +
  theme_bw() +
  guides(color=guide_legend("my title"))  # add guide properties by aesthetic

enter image description here

32
Megatron