我正在尝试为使用ggplot创建的情节添加图例。我从两个csv文件加载数据,每个文件有两列8行(不包括标题)。
我从每个文件构建一个包含累计总数的数据框,因此数据框有三列数据(bv
,bin_count
和bin_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的新手,非常感谢任何帮助。
根据评论,我编辑了代码,以便在数据集加载到数据框后重现数据集。
关于生成单个数据框架,我欢迎有关如何实现这一目标的建议 - 我仍然在努力解决数据框架的工作原理。
答案 0 :(得分:3)
首先,我们通过合并i1d
和i2d
来组织数据。我添加了一个列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
函数中指定y
和ggplot
,我们就不需要在我们要添加到绘图中的各种geoms
中重写它。在前三行后,我复制并粘贴了您所拥有的内容,以便格式符合您的期望。我还添加了theme_bw
,因为我觉得它更具视觉吸引力。我们还使用colour
aes
)在data
中指定了data.frame
如果我们想更进一步,我们可以使用scale_colour_manual
函数指定归因于data.frame data
中i12d
列的不同值的颜色:
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'))