我对ggplot2中的传说有疑问.
假设我有一个关于两个农场两种不同颜色的平均胡萝卜长度的假设数据集:
carrots<-NULL
carrots$Farm<-rep(c("X","Y"),2)
carrots$Type<-rep(c("Orange","Purple"),each=2)
carrots$MeanLength<-c(10,6,4,2)
carrots<-data.frame(carrots)
Run Code Online (Sandbox Code Playgroud)
我做了一个简单的条形图:
require(ggplot2)
p<-ggplot(carrots,aes(y=MeanLength,x=Farm,fill=Type)) +
geom_bar(position="dodge") +
opts(legend.position="top")
p
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有办法从图例中删除标题('类型')?
谢谢!
我正在尝试使用ggplot2创建一个条形图,y轴的起始值大于零.
假设我有关于三个不同农场胡萝卜长度的假设数据集的均值和标准误差:
carrots<-NULL
carrots$Mean<-c(270,250,240)
carrots$SE<-c(3,4,5)
carrots$Farm<-c("Plains","Hill","Valley")
carrots<-data.frame(carrots)
Run Code Online (Sandbox Code Playgroud)
我创建了一个基本情节:
p<-ggplot(carrots,aes(y=Mean,x=Farm)) +
geom_bar(fill="slateblue") +
geom_errorbar(aes(ymin=Mean-SE,ymax=Mean+SE), width=0)
p
Run Code Online (Sandbox Code Playgroud)
这很好,但是当比例从0开始到很难看到长度的差异.因此,我想将y轴重新缩放为c(200,300).但是,当我尝试这样做:
p+scale_y_continuous('Length (mm)', limit=c(200,300))
Run Code Online (Sandbox Code Playgroud)
虽然错误条仍然存在,但条形图会消失.
我的问题是:是否可以使用ggplot2绘制带有此调整轴的条形图?
感谢您提供的任何帮助或建议.
编织到HTML时,我遇到了knitr中代码输出块中的文本换行问题.
例如,如果我运行以下内容:
matrix(rnorm(60, 5, 2), ncol = 12)
Run Code Online (Sandbox Code Playgroud)
HTML中的输出将包装表,给出这样的输出,其中第12列在其余部分下移动:
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
## [1,] 3.407 0.8035 2.981 5.269 6.989 5.107 7.143 3.127 3.624 7.220 4.805
## [2,] 3.907 5.5971 5.488 4.995 6.496 5.980 1.576 3.009 6.605 3.440 2.754
## [3,] 1.945 3.7668 4.860 2.945 3.663 5.945 7.168 2.012 5.873 8.190 7.441
## [4,] 4.893 6.2054 4.403 3.967 2.880 7.196 1.813 3.283 5.216 5.699 2.829
## [5,] 5.706 0.9084 5.802 1.404 3.122 …Run Code Online (Sandbox Code Playgroud) 我正在使用带有R Markdown的knitr包来创建HTML报告.使用'+'时,我在将代码保持在单独的行上时遇到了一些麻烦.
例如,
```{r}
ggplot2(mydata, aes(x, y)) +
geom_point()
```
Run Code Online (Sandbox Code Playgroud)
将返回以下HTML文档
ggplot2(mydata, aes(x, y)) + geom_point()
Run Code Online (Sandbox Code Playgroud)
通常情况下这很好,但是一旦我开始添加其他行,就会出现问题,我希望将这些行分开以使代码更容易理解.运行以下内容:
```{r}
ggplot2(mydata, aes(x, y)) +
geom_point() +
geom_line() +
opts(panel.background = theme_rect(fill = "lightsteelblue2"),
panel.border = theme_rect(col = "grey"),
panel.grid.major = theme_line(col = "grey90"),
axis.ticks = theme_blank(),
axis.text.x = theme_text (size = 14, vjust = 0),
axis.text.y = theme_text (size = 14, hjust = 1.3))
```
Run Code Online (Sandbox Code Playgroud)
将导致所有代码出现在一行中,使得更难以遵循:
ggplot2(mydata, aes(x, y)) + geom_point() + geom_line() + opts(panel.background = theme_rect(fill = "lightsteelblue2"), panel.border = theme_rect(col …Run Code Online (Sandbox Code Playgroud) 我的目标是绘制一条河流的路径,其中的点指示河流附近的重要地点.
我有两个数据框,分别给出河流和地点坐标:
river<-data.frame(
long=c(-2.816452494909265,-2.845487331898639,-2.883036393822358),
lat=c(56.38229290416972,56.36346886284386,56.36577994637793))
samploc<-data.frame(
site=c("Site1","Site2","Site3"),
long=c(-2.826213585663894,-2.816519300644918,-2.868437228090127),
lat=c(56.3649482229089,56.38166100310631,56.36716019476281))
Run Code Online (Sandbox Code Playgroud)
使用旧学校R图,使用par(new = T)并保存xlim和ylim,我会得到这样的结果:
旧学校情节http://users.utu.fi/susjoh/Riverplot.png
但我想用ggplot2来做.河流和点数可以单独调用:
ggplot(river,aes(x=long,y=lat)) + geom_path()
ggplot(samploc,aes(x=long,y=lat,lab=site)) + geom_point() + geom_text(vjust=2)
Run Code Online (Sandbox Code Playgroud)
我试图通过创建前两个数据框来欺骗:
> rivsamp
river.long river.lat samp.site samp.long samp.lat
1 -2.816452 56.38229 NA NA NA
2 -2.845487 56.36347 NA NA NA
3 -2.883036 56.36578 NA NA NA
4 NA NA Site1 -2.826214 56.36495
5 NA NA Site2 -2.816519 56.38166
6 NA NA Site3 -2.868437 56.36716
ggplot(rivsamp) +
geom_path(aes(x=river.long,y=river.lat)) +
geom_point(aes(x=samp.long,y=samp.lat)) +
geom_text(aes(x=samp.long,y=samp.lat,lab=samp.site),vjust=2)
Run Code Online (Sandbox Code Playgroud)
ggplot2 plot http://users.utu.fi/susjoh/riverggplot.png
它可以工作,但创建这个新的数据框并不像旧的par(new = T)方法那么简单.
是否有更简单的方法使用ggplot2从各个数据帧中过度绘制? …
假设我有一个关于来自不同领域和不同品种的胡萝卜产量的数据集:
carrots<-list(Yield=c(345,226,74,559,288,194),
Field=c("A","B","C","D","E","F"),
Breed=rep(c("Long","Short"),each=3))
carrots<-data.frame(carrots)
Run Code Online (Sandbox Code Playgroud)
我想绘制一个条形图,显示每个字段的产量,按品种着色:
ggplot(carrots,aes(y=Yield,x=Field,fill=Breed)) +
geom_bar() +
opts(legend.direction = "horizontal",
legend.position = "top") +
labs(fill="")
Run Code Online (Sandbox Code Playgroud)
但是传说总是与情节区域略微重叠:
带有轻微图例重叠的情节http://users.utu.fi/susjoh/Rplot.png
我已经尝试手动调整图例位置,使其位于绘图区域之外,例如
opts(legend.position=c(0.5,1.1)
Run Code Online (Sandbox Code Playgroud)
然后情节边缘切断了传说,我不知道如何调整它们.这个问题有更微妙的解决方案吗?