使用ggplot

时间:2016-08-29 08:37:18

标签: r ggplot2

我正在尝试为使用ggplot创建的情节添加图例。我从两个csv文件加载数据,每个文件有两列8行(不包括标题)。

我从每个文件构建一个包含累计总数的数据框,因此数据框有三列数据(bvbin_countbin_cumulative),每列有8行并且每个值都是整数。

然后如下绘制两个数据集。显示很好,但我无法弄清楚如何在结果图中添加一个图例,因为看起来ggplot对象本身应该有一个数据源,但我不知道如何构建一个有多个列的数据源名。

library(ggplot2)

i2d <- data.frame(bv=c(0,1,2,3,4,5,6,7), bin_count=c(0,0,0,2,1,2,2,3), bin_cumulative=cumsum(c(0,0,0,2,1,2,2,3)))
i1d <- data.frame(bv=c(0,1,2,3,4,5,6,7), bin_count=c(0,1,1,2,3,2,0,1), bin_cumulative=cumsum(c(0,1,1,2,3,2,0,1)))


c_data_plot <- ggplot() + 
  geom_line(data = i1d, aes(x=i1d$bv,  y=i1d$bin_cumulative), size=2, color="turquoise") +
  geom_point(data = i1d, aes(x=i1d$bv, y=i1d$bin_cumulative), color="royalblue1", size=3) + 
  geom_line(data = i2d, aes(x=i2d$bv,  y=i2d$bin_cumulative), size=2, color="tan1") +  
  geom_point(data = i2d, aes(x=i2d$bv, y=i2d$bin_cumulative), color="royalblue3", size=3) +
  scale_x_continuous(name="Brightness", breaks=seq(0,8,1)) +
  scale_y_continuous(name="Count", breaks=seq(0,12,1)) + 
  ggtitle("Combine plot of BV cumulative counts")

c_data_plot

我是R的新手,非常感谢任何帮助。

根据评论,我编辑了代码,以便在数据集加载到数据框后重现数据集。

关于生成单个数据框架,我欢迎有关如何实现这一目标的建议 - 我仍然在努力解决数据框架的工作原理。

1 个答案:

答案 0 :(得分:3)

首先,我们通过合并i1di2d来组织数据。我添加了一个列data,用于存储原始数据集的名称。

重组数据

i1d$data <- 'i1d'
i2d$data <- 'i2d'
i12d <- rbind.data.frame(i1d, i2d)

然后,我们使用ggplot2更常见的语法创建绘图:

创建情节

ggplot(i12d, aes(x = bv, y = bin_cumulative))+
    geom_line(aes(colour = data), size = 2)+
    geom_point(colour = 'royalblue', size = 3)+
    scale_x_continuous(name="Brightness", breaks=seq(0,8,1)) +
    scale_y_continuous(name="Count", breaks=seq(0,12,1)) + 
    ggtitle("Combine plot of BV cumulative counts")+
    theme_bw()

如果我们在x函数中指定yggplot,我们就不需要在我们要添加到绘图中的各种geoms中重写它。在前三行后,我复制并粘贴了您所拥有的内容,以便格式符合您的期望。我还添加了theme_bw,因为我觉得它更具视觉吸引力。我们还使用colour

中的变量(aes)在data中指定了data.frame

enter image description here

如果我们想更进一步,我们可以使用scale_colour_manual函数指定归因于data.frame datai12d列的不同值的颜色:

ggplot(i12d, aes(x = bv, y = bin_cumulative))+
    geom_line(aes(colour = data), size = 2)+
    geom_point(colour = 'royalblue', size = 3)+
    scale_x_continuous(name="Brightness", breaks=seq(0,8,1)) +
    scale_y_continuous(name="Count", breaks=seq(0,12,1)) + 
    ggtitle("Combine plot of BV cumulative counts")+
    theme_bw()+
    scale_colour_manual(values = c('i1d' = 'turquoise',
                                   'i2d' = 'tan1'))

enter image description here