繁体   English   中英

R ggplot:如何通过在两列中组合相应的框架元素的标签制作图例?

[英]R ggplot: how to make a legend with labels combining correspondent frame elements in two columns?

我正在尝试绘制一组点,在图中显示标签。 由于标签包含长名,因此我想枚举标签并在图例中报告相应的名称,例如:

  1. A区
  2. B区........

我的框架包括4列:X,Y,名称,数字

到目前为止,我的代码如下:

ggplot(data.f,aes(X,Y)) +
  geom_point() +
  geom_smooth(method="lm") +
  geom_text(aes(label=Numbers),hjust=-0.4, vjust=0, size=6) +
  ylab("Y") +
  xlab("X")

产生附图:

geom_point标签

您是否知道如何使用“名称”列在图例中自动显示对应的名称?

这并不是您想要的,但它可能会给您一些直觉。

由于使用了平滑线,因此按名称进行分组,着色或构面没有帮助。 可以使用theme(plot.margin = unit(c(., ., ., .)))调整边距来打开手动图例的空间,并使用paste0(data.f$Numbers, ". ", data.f$Name) 但是,您需要大约60个区域名称的较大空间,这会影响图形的可读性。

我的替代建议是将鼠标悬停时显示区域名称,以保持环境整洁。 这是一个ggiraph实现:

# importing packages
library(dplyr)
library(ggiraph)

# creating a similar data frame
set.seed(147)
data.f <- data_frame(
  X = rnorm(10),
  Y = rnorm(10),
  Name = paste("Region", LETTERS[1:10]),
  Numbers = 1:10
)

# building the ggplot with interactive features
g <- ggplot(data = data.f, aes(x = X, y = Y)) +
  geom_smooth(method = "lm") +
  geom_text(
    aes(label = Numbers), 
    hjust = -0.4, 
    vjust = 0, 
    size = 6
  ) +
  geom_point_interactive(aes(tooltip = Name, data_id = Numbers)) +
  labs(x = "X", y = "Y")

# building the ggiraph output
ggiraph(ggobj = g)

如果要了解有关ggiraph更多信息并进一步自定义图形,可以在文档中找到其他详细信息: 使用ggiraph

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM