请注意我是R的初学者 我已经使用merge()方法将两个数据框与一个公共列合并。我已经获得了如下数据框:
x y1 y2
1 3 5
2 2 4
1 2 2
3 5 5
...
等。 我想用ggplot绘制这样的数据框架。我创建的内容(使用geom_point的文档是
ggplot(data = dat_c, aes(games, variance.x)) +
geom_point(aes(x = games, y = variance.x), legend= TRUE, xlab="X", ylab="Y", colour=alpha('red', 0.05)) +
geom_point(aes(x = games, y = variance.y), legend = TRUE, colour=alpha('blue', 0.05) )
它有效,NaNs不会打扰我,因为我得到警告他们被忽略了,这很好。但是我有两个问题,我不知道如何解决它们:
以下是它的外观:
答案 0 :(得分:11)
另见:
(这些是搜索[r] ggplot melt
的结果,尽管您也可能通过[r] ggplot legend
来到那里......)
如果可以,请获取ggplot
本书的副本并从头开始阅读 - 遗憾的是草稿的PDF不再在线提供,但这本书值得投资。
您实际上有一些点,x
和y
值接近您的情节的极端值。很难看到它们,因为它们几乎是透明的(在白色背景上看它们会更容易一些,即尝试在+theme_bw()
电话中添加ggplot
。如果要限制绘图的范围,可以使用xlim
和ylim
。 (对您的数据尝试summary
并查看最大值......)
获取轴的最佳方法是遵循ggplot
将您的数据“融化”成一个长格式数据集的习惯用法,其中包含一列(y1
vs y2
)和另一个值,如下所示:
d <- data.frame(x=c(1,2,1,3),
y1=c(3,2,2,5),
y2=c(5,4,2,5))
library(ggplot2)
library(reshape2) ## for melt()
dm <- melt(d,id.var=1)
ggplot(data=dm,aes(x,value,colour=variable))+
geom_point(alpha=0.2)+
scale_colour_manual(values=c("red","blue"))+
labs(x="games",y="variance")
(抱歉有点奇怪的格式)
我将alpha
值设置得稍高,否则很难看到图中的点。我认为默认颜色(红色和蓝色)是可以的,但我使用scale_colour_manual
来按照您指定的方式获取它们。
答案 1 :(得分:8)
您应该将数据melt
转换为长格式,然后将颜色美学映射到融化数据框架中的变量列。像这样:
dat <- data.frame(x = c(1,2,1,3), y1 = c(3,2,2,5), y2 = c(5,4,2,5))
dat.m <- melt(dat, id.vars = "x")
ggplot(dat.m, aes(x, value, colour = variable)) +
geom_point() +
scale_colour_manual(values = c("red", "blue"))
您可以分别使用xlim()
和ylim()
手动设置限制。目前尚不清楚你在使用alpha做什么,所以我会把它留给你。