R 使用ggplot2
我的问题与R(3.2.3)中的ggplot2有关。我有4个数据集,包含2列和大约80000-100000行。我使用以下代码为其中一个数据集创建绘图:R 使用ggplot2,r,plot,ggplot2,R,Plot,Ggplot2,我的问题与R(3.2.3)中的ggplot2有关。我有4个数据集,包含2列和大约80000-100000行。我使用以下代码为其中一个数据集创建绘图: dataset1 <- read.table("file1.txt", header=T) ggplot(data=dataset1, aes(dataset1$length))+ geom_histogram (binwidth =500)+ scale_x_continuous(breaks=seq(300,1000,by=200),se
dataset1 <- read.table("file1.txt", header=T)
ggplot(data=dataset1, aes(dataset1$length))+ geom_histogram (binwidth =500)+
scale_x_continuous(breaks=seq(300,1000,by=200),seq(1001,15000,by=1000))
在原始数据文件中,它继续以类似于我发布的方式增加到12000。您认为ggplot2是否适合此绘图,如果不适合,请建议正确的绘图
此外,我正在寻找一种在一个图中显示所有4个数据集的长度分布的方法,以便轻松比较它们。如果你能告诉我怎么做,我将不胜感激
非常感谢。我想你应该换个新的
scale_x_continuous(breaks=seq(300,1000,by=200),seq(1001,15000,by=1000))
借
或
(不完全确定你的意思)
根据你的样本数据,我生成了一些只包含长度的人工数据
df1 = data.frame(length=runif(300,300,1200))
df2 = data.frame(length=runif(300,300,1200))
df3 = data.frame(length=runif(300,900,1200))
df2 = data.frame(length=runif(300,300,12000))
df4 = data.frame(length=runif(300,300,12000))
# plotting a single dataset
ggplot(data=df4, aes(length))+ geom_histogram (binwidth =500)+
+ scale_x_continuous(breaks=c(seq(300,1000,by=200),seq(1001,15000,by=1000)))
#combine the datframes
df = data.frame(df1$length,df2$length,df3$length,df4$length)
library(reshape)
melted <- melt(df)
ggplot(data=melted, aes(value))+aes(fill=variable)+ geom_histogram (binwidth =500)+
scale_x_continuous(breaks=c(seq(300,1000,by=200),seq(1001,15000,by=1000)))
为了有一个稍微好一点的X轴标签,我重新分配了一些标签,并将它们旋转了45度
ggplot(data=melted, aes(value))+aes(fill=variable)+ geom_histogram (binwidth =500,position="dodge")+
scale_x_continuous(breaks=c(seq(300,1000,by=200),seq(1100,15000,by=1000)))+theme(axis.text.x = element_text(angle = 45, hjust = 1))
图表开关会相应地调整箱子。事实上,我喜欢不同大小的酒吧
ggplot(data=melted, aes(value))+
aes(fill=variable)+
geom_histogram(breaks=c(seq(300,1000,by=200),seq(1100,15000,by=1000)),position="dodge")+
scale_x_continuous(breaks=c(seq(300,1000,by=200),seq(1100,15000,by=1000)))+
theme(axis.text.x = element_text(angle = 45, hjust = 1))
我在下面给出了答案。但是,如果您提供了示例数据(例如,使用iris),则会更容易。此外,您的间隔也匹配。我使用了您建议的修改,但由于数据量大,绘图不有趣。我想附上图片,但不知道如何在评论部分。我只是做了两个小的更新,以纳入4个数据集的问题。您不能将图像作为评论上传:(最好将其上传到web的某个位置并提供链接。但是,“intrestingness”可能更像是您的数据问题。非常感谢您的回复。实际上,第一个组合图是我想要的。但是,x轴标签(图的左侧)这是由于大量数据造成的混乱。你能告诉我它是如何变得清晰的吗?很抱歉,还有一个更进一步的问题,可能是一个基本的问题,我没有完全理解“data.frame(length=runif(3003003001200))”的含义。如果我能得到你的解释,那就太好了,我在R中真的是个新手。命令data.frame(length=runif(3001200))生成一些样本数据(300到1200之间的300个点)有一个稍微大一点的数据集。我还添加了另一个带有翻转标签的版本。我意识到更薄的一点是,箱子宽度当前仅在标签中,而不在直方图中。为该数据集添加了另一个版本。我希望我提供的图表集允许您构建所需的图表。最后,我发现了这个问题。它与melted的格式有关,melted有3个coulmns,如这里所示,设置了contig length(header)1 Dataset 1 seq1 773,因此我在MELTE命令的末尾添加了“measure=c(3)),head改为设置contig变量值(header)1数据集1 seq1 length 773。最后,我使用以下命令绘制:ggplot(data=melled,aes(value))+aes(fill=set)+geom_直方图(binwidth=500)+scale_x_continuous(breaks=c(seq(3001000,by=200),seq(100115000,by=1000))。这张图听起来不错。很抱歉这样写,很难读。再次感谢您所做的一切
df1 = data.frame(length=runif(300,300,1200))
df2 = data.frame(length=runif(300,300,1200))
df3 = data.frame(length=runif(300,900,1200))
df2 = data.frame(length=runif(300,300,12000))
df4 = data.frame(length=runif(300,300,12000))
# plotting a single dataset
ggplot(data=df4, aes(length))+ geom_histogram (binwidth =500)+
+ scale_x_continuous(breaks=c(seq(300,1000,by=200),seq(1001,15000,by=1000)))
#combine the datframes
df = data.frame(df1$length,df2$length,df3$length,df4$length)
library(reshape)
melted <- melt(df)
ggplot(data=melted, aes(value))+aes(fill=variable)+ geom_histogram (binwidth =500)+
scale_x_continuous(breaks=c(seq(300,1000,by=200),seq(1001,15000,by=1000)))
ggplot(data=melted, aes(value))+aes(fill=variable)+ geom_histogram (binwidth =500,position="dodge")+
scale_x_continuous(breaks=c(seq(300,1000,by=200),seq(1001,15000,by=1000)))
ggplot(data=melted, aes(value))+aes(fill=variable)+ geom_histogram (binwidth =500,position="dodge")+
scale_x_continuous(breaks=c(seq(300,1000,by=200),seq(1100,15000,by=1000)))+theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplot(data=melted, aes(value))+
aes(fill=variable)+
geom_histogram(breaks=c(seq(300,1000,by=200),seq(1100,15000,by=1000)),position="dodge")+
scale_x_continuous(breaks=c(seq(300,1000,by=200),seq(1100,15000,by=1000)))+
theme(axis.text.x = element_text(angle = 45, hjust = 1))