gpt4 book ai didi

r - 如何使用 ggplot2 + directlabels 为标签使用自定义名称

转载 作者:行者123 更新时间:2023-12-04 12:35:37 26 4
gpt4 key购买 nike

我在 geom_line() 图中将 ggplot2 与 directlabels 包一起使用,我希望其中一个标签显示为“X-M”。但是,在我的 data.frame() 中,“X-M”作为列名被重命名为“X.M”,而且我找不到关于如何提供 direct.label 使用自定义标签名称的功能,阅读源代码也无济于事。 (directabels 似乎不支持在 ggplot 刻度中设置的标签名称,这是我尝试的第一件事。)

示例代码:

library("scales")
library("reshape2")
library("ggplot2")
library("directlabels")

data = data.frame(
C = c(1.2, 1.4, 0.3, -2.0, 0.5),
I = c(1.2, 1.5, -1.3, -3.8, 1.8),
G = c(0.2, 0.3, 0.3, 0.2, 0.2),
"X-M" = c(2.9, -0.7, 0.3, -2.8, 1.5) +
c(-2.7, 0.2, 0.4, 3.6, -2.4),
year = c("2006", "2007", "2008", "2009", "2010"))

p <- ggplot(data = melt(data), aes(year, value, color = variable)) +
geom_line(aes(group = variable)) +
scale_color_hue(breaks = c("C", "I", "G", "X.M"),
labels = c("C", "I", "G", "X-M")) # directlabels doesn't
# use this

# Compare:
p

# with:
direct.label(p, list(last.points, hjust = -0.25))

结果图可见here .带有直接标签的使用“X.M”而不是“X-M”。非常感谢!

最佳答案

directlabels 似乎从您的数据中的列名中获取标签。

这意味着您必须确保数据中的标签正确无误。为此,您必须在创建 data.frame 时设置 check.names=FALSE:

data = data.frame(
C = c(1.2, 1.4, 0.3, -2.0, 0.5),
I = c(1.2, 1.5, -1.3, -3.8, 1.8),
G = c(0.2, 0.3, 0.3, 0.2, 0.2),
"X-M" = c(2.9, -0.7, 0.3, -2.8, 1.5) +
c(-2.7, 0.2, 0.4, 3.6, -2.4),
year = c("2006", "2007", "2008", "2009", "2010"),
check.names=FALSE)

data
C I G X-M year
1 1.2 1.2 0.2 0.2 2006
2 1.4 1.5 0.3 -0.5 2007
3 0.3 -1.3 0.3 0.7 2008
4 -2.0 -3.8 0.2 0.8 2009
5 0.5 1.8 0.2 -0.9 2010

现在剧情:

p <- ggplot(data = melt(data), aes(year, value, color = variable)) +
geom_line(aes(group = variable))
direct.label(p, list(last.points, hjust = -0.25))

enter image description here

关于r - 如何使用 ggplot2 + directlabels 为标签使用自定义名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11531960/

26 4 0