如何格式化R中数据系列的散点图

时间:2016-11-17 15:48:19

标签: r ggplot2 scatter-plot

我一直在努力在R中创造一个体面的散点图。我不会认为它太难了。 经过一些研究,在我看来ggplot可能是一个允许大量格式化的选择。但是,我正在努力理解它是如何运作的。 我想创建两个数据系列的散点图,显示具有两种不同颜色,可能是不同形状的点,以及带有系列名称的图例。 以下是我的尝试,基于this

year1 <- mpg[which(mpg$year==1999),]
year2 <- mpg[which(mpg$year==2008),]

ggplot() + 
  geom_point(data = year1, aes(x=cty,y=hwy,color="yellow"))  +
  geom_point(data = year2, aes(x=cty,y=hwy,color="green")) +
  xlab('cty') +
  ylab('hwy')

现在,这看起来几乎没问题,但是颜色不匹配(除非我突然变成了色盲)。这是为什么? 另外,如何添加系列名称和更改符号形状?

enter image description here

3 个答案:

答案 0 :(得分:1)

不要构建2个不同的数据帧:

df <- mpg[which(mpg$year%in%c(1999,2008)),]
df$year<-as.factor(df$year)
ggplot() + 
  geom_point(data = df, aes(x=cty,y=hwy,color=year,shape=year))  +
  xlab('cty') +
  ylab('hwy')+
  scale_color_manual(values=c("green","yellow"))+
  scale_shape_manual(values=c(2,8))+
  guides(colour = guide_legend("Year"),
         shape = guide_legend("Year"))

答案 1 :(得分:1)

这将与您当前设置的方式一起使用:

ggplot() + 
  geom_point(data = year1, aes(x=cty,y=hwy), col = "yellow", shape=1)  +
  geom_point(data = year2, aes(x=cty,y=hwy), col="green", shape=2) +
  xlab('cty') +
  ylab('hwy')

答案 2 :(得分:0)

你想:

library(ggplot2)    
ggplot(mpg, aes(cty, hwy, color=as.factor(year)))+geom_point()