在 ggplot 中编辑图例(文本)标签

我花了几个小时查看文档和 StackOverflow,但似乎没有解决方案可以解决我的问题。当使用 ggplot时,我无法在图例中获得正确的文本,即使它在我的数据框中。我已经尝试了 scale_colour_manualscale_fill_manual与不同的价值为 labels=,如 c("T999", "T888")", "cols"

这是我的代码:

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")

非常感谢您的帮助!

569987 次浏览

Henrik 提到的教程是学习如何使用 ggplot2软件包创建情节的极好资源。

数据示例:

# 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"))

结果是:

enter image description here

正如@user2739472在评论中提到的: 如果您只想更改图例文本标签,而不想更改 ggplot 默认调色板中的颜色,那么可以使用 scale_color_hue(labels = c("T999", "T888"))而不是 scale_color_manual()

图例标题可以用特定的 审美标记。

这可以通过使用来自 ggplot2(更多的 给你给你)的 guides()labs()功能来实现。它允许您使用美学映射添加指南/图例属性。

下面是一个使用 mtcars数据集和 labs()的例子:

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

使用 guides()回答 OP 的问题:

# 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