【问题标题】:adding data to existing ggplot2 plot将数据添加到现有的 ggplot2 图
【发布时间】:2014-01-14 17:55:40
【问题描述】:

我在汽车数据集上使用 ggplot2 包。我创建了一个基于制造商的网格并按类别进行颜色编码..

我想做的是: 从数据集 mdat 添加到网格中的每个图。数据应表示为数据点。 我想看到的输出是 mdat 中的数据将在每个图中表示为点,该类应该添加到图例中,我希望每个点都用不同的颜色和形状表示。我不确定如何做到这一点,任何帮助表示赞赏。

非常感谢!

## Sample data
   p <- ggplot(mpg, aes(x=hwy, y=cty))
   p<- p + facet_grid(. ~ manufacturer) + facet_wrap(~manufacturer) 
   p<- p + geom_point(aes(colour = class), size = 7)
   p<- p + scale_colour_brewer()
   p<- p + geom_point(shape = 1, size = 7,  alpha = I(0.7))
   print(p) 



 ##now add on the randomn portfolios on another grid
   hwy = c("35", "40", "25")
   cty = c("20", "25", "10")
   mdat <- data.frame(hwy,cty)
   mdat$class <- c("generic1", "generic2", "generic3")

【问题讨论】:

  • 只是几个 cmets:(1) 对离散值(例如,类)使用渐变色标不是一个好主意。 (2) 使用颜色 brewer Blues set 会造成较浅的蓝色消失在背景中的情况,迫使您使用有边框的形状。最好使用Set1 or Dark2 (3) 你正在使用facet_grid(...)facet_wrap(..) 一起使用;后者覆盖前者。 (4) 不需要I(0.7),只需alpha=0.7即可。
  • 感谢您的帮助!

标签: r ggplot2


【解决方案1】:

首先,在您的数据框 mdat 中,不要在数字周围使用引号,因为这会使它们成为字符。

mdat <- data.frame(hwy = c(35, 40, 25),
                   cty = c(20, 25, 10))
mdat$class <- c("generic1", "generic2", "generic3")

如果您需要用不同的颜色表示这些新点,然后为现有点分类,那么最好使用允许设置填充的形状,因此它们使用不同的比例。

p+geom_point(data=mdat,aes(hwy,cty,shape=class,fill=class),size=7)+
  scale_shape_manual(values=c(21,22,23))

【讨论】:

  • 非常感谢您的帮助。但是,我仍然无法获得您在图表上的颜色。这就是我添加的 p
  • 我的代码中有错误 - aes() 中应该有 fill=class。我更新了答案
  • 没关系,我想我明白我必须向 aes 等添加填充。非常感谢你的帮助。我还有一个简短的问题。如果我想用不同颜色的“gen1”、“gen2”、“gen3”等实际名称替换形状......我应该使用什么命令?再次感谢!
  • @hdg - 为此使用geom_text(...)
猜你喜欢
  • 1970-01-01
  • 2018-05-11
  • 2019-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多