【问题标题】:Highlighting particular regions of a scatterplot in a ggplot在 ggplot 中突出显示散点图的特定区域
【发布时间】:2012-08-14 14:42:25
【问题描述】:

我需要讨论散点图,并想参考该图的特定区域。有没有办法“突出”情节的特定部分?可能带有如下框和标签?

set.seed(1410)
dsmall<-diamonds[sample(nrow(diamonds), 100), ]
df<-data.frame("x"=dsmall$carat, "y"=dsmall$price)

p <-ggplot(df, aes(x, y)) 
p <- p + geom_point(alpha=2/10, shape=21, fill="blue", colour="black", size=5)

【问题讨论】:

  • 虽然这可以用 ggplot 来完成。真的有必要这样做吗?我认为使用图像编辑工具会快得多。
  • @iselzer 这当然取决于你的目标?对于一次性,我同意将它放在矢量绘图工具中是首选,但对于可重复的分析,可能会自动执行报告中多个部分的任务,使用几行代码来实现这个结果似乎是一件微不足道的事情去做。

标签: r ggplot2


【解决方案1】:

对于单个区域,最容易使用annotate,首先使用rect,然后使用text

p + annotate("rect", xmin=1.5, xmax=2.5, ymin=12500, ymax= 18000, 
             fill=NA, colour="red") +
    annotate("text", x=1.75, y=17000, label="Region A", size=8)


对于多个区域,可以将数据放入一个数据框中,使用geom_textgeom_rect

regions <- data.frame(
  xmin=c(1.5, 1, 0),
  xmax=c(2.5, 2, 1),
  ymin=c(12500, 5000, 0),
  ymax=c(17500, 12500, 5000),
  x   =c(2, 1.5, 0.5),
  y   =c(15000, 7500, 2500),
  lab = paste("Region", LETTERS[1:3])
)

p + 
  geom_rect(data=regions, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), 
            fill=NA, colour="red") +
  geom_text(data=regions, aes(x=x, y=y, label=lab)) 

【讨论】:

  • 非常好!谢谢。比不得不求助于辅助图形软件好多了!
  • 我知道这是旧的,但这个例子中使用的“p +”成语是什么?
  • @chris p 是在原始问题中定义的。我的回答只是将 ggplot 层添加到这个预先存在的对象中。
猜你喜欢
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 1970-01-01
相关资源
最近更新 更多