首页 > 解决方案 > 在ggplot2中重命名变量名

问题描述

我对 ggplot2 的图例中的变量名有疑问

我相信你觉得它很简单,所以我现在不提供可重现的代码。

我对长数据运行这个 ggplot2 查询:

ggplot(subset(BaumA_long, 
              Messpunkt %in% c("Tleaf","Tair","Tcrown","TbarkS","TbarkN", "Tsoil")),
       aes(x=Zeit, y=value, color=Messpunkt)) +
  geom_line(size=0.3) +
  scale_x_datetime(limits=start.endKW26, labels = date_format("%d.%m. %H h",tz = "CET"), 
                   breaks = date_breaks("12 hours"), expand = c(0, 0)) +
  scale_y_continuous(limits = c(5, 55), breaks = seq(10, 55, by = 3)) +
  labs(x="Datum", y="Temperatur") +
  ggtitle("Cbet 1")+
  theme(plot.title = element_text(vjust=-15),
        axis.text.x = element_text(angle = 35))+
  theme(legend.position='top') +
  #labels=c("Tleaf"="Blatt", "Tair"="Luft", "Tcrown"="Krone", 
  #         "TbarkS"="Borke_S", "TbarkN"="Borke_N","Tsoil"="Substrat") +
  scale_color_manual(values = c("Tleaf" = "#339900", "Tair" = "blue", "Tcrown"= "red", 
                                "TbarkS" = "orange2", "TbarkN" = "pink", "Tsoil" = "brown"))

这给了我以下情节: 最终情节的png

我要更改的只是图例中变量“Tleaf”等的名称。我试过:

ggplot + 
  labels=c("Tleaf"="Blatt", "Tair"="Luft", "Tcrown"="Krone", 
           "TbarkS"="Borke_S", "TbarkN"="Borke_N","Tsoil"="Substrat") +

没有成功。

为了保持我的代码简洁和简短,我想避免重命名所有变量,因为我有很多数据集。

标签: rggplot2

解决方案


使用scale_color_discrete()

代码

library(ggplot2)

labels <- c(var1 = "Custom Value 1", var2 = "Custom Value 2", var3 = "Custom Value 3")

ggplot(df, aes(x, val, col = var)) +
  geom_line() +
  scale_color_discrete(labels = labels)

数据

structure(list(x = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 
1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 
6L, 7L, 8L, 9L, 10L), var = c("var1", "var1", "var1", "var1", 
"var1", "var1", "var1", "var1", "var1", "var1", "var2", "var2", 
"var2", "var2", "var2", "var2", "var2", "var2", "var2", "var2", 
"var3", "var3", "var3", "var3", "var3", "var3", "var3", "var3", 
"var3", "var3"), val = c(-0.33, 0.96, 1.39, 0.92, 1.06, -0.63, 
-0.33, 2.94, -1.42, -0.15, 3.6, 1.59, 3.87, 3.25, 2.25, 2.83, 
2.71, 1.13, 4.49, 0.8, 2.67, 3.22, 3.23, 3.39, 2.92, 3.04, 3, 
3.3, 3.22, 3.4)), class = "data.frame", row.names = c(NA, -30L
))

推荐阅读