我开始使用的大ggplot2包中的R打印和的第一件事情我问自己之前每个小区是一个"好,我会用qplot还是ggplot?"
据我所知,它qplot提供了更简单的语法,同时ggplot允许最大的功能和灵活性,但你最常用的功能是什么,你是否有一些精确的用例?您是否主要使用qplot并且ggplot仅用于复杂的情节,或者您是否ggplot每次都使用?
感谢您的反馈意见 !
我正在创建一个刻面图,以预测值与残差的图表并排查看预测值与实际值.我将shiny用于帮助探索使用不同训练参数的建模工作的结果.我用85%的数据训练模型,测试剩余的15%,并重复5次,每次收集实际/预测值.计算残差后,我的data.frame样子如下:
head(results)
act pred resid
2 52.81000 52.86750 -0.05750133
3 44.46000 42.76825 1.69175252
4 54.58667 49.00482 5.58184181
5 36.23333 35.52386 0.70947731
6 53.22667 48.79429 4.43237981
7 41.72333 41.57504 0.14829173
Run Code Online (Sandbox Code Playgroud)
我想要的是:
pred与act和pred对比residpred对act是相同的,理想地从min(min(results$act), min(results$pred))至max(max(results$act), max(results$pred))pred与resid 不被通过我做什么实际与预测的情节影响.x只绘制预测值并y仅绘制剩余范围就可以了.为了并排查看两个图,我将数据融化:
library(reshape2)
plot <- melt(results, id.vars = "pred")
Run Code Online (Sandbox Code Playgroud)
现在情节:
library(ggplot2)
p <- ggplot(plot, aes(x = pred, y = …Run Code Online (Sandbox Code Playgroud) 我需要制作一个空图.这是我能想到的最好的.
plot(0, xaxt = 'n', yaxt = 'n', bty = 'n', pch = '', ylab = '', xlab = '')
Run Code Online (Sandbox Code Playgroud)
更简单的解决方案?
PS:完全空,没有轴等.
即使我发现哈德利对谷歌的论坛中发帖POSIXct和geom_vline,我无法完成它.我有一个时间序列,并希望绘制1998年,2005年和2010年的垂直线.我尝试使用ggplot和qplot语法,但我仍然看不到垂直线,或者在第一个垂直网格上绘制垂直线,整个系列在右边有点奇怪地移动.
gg <- ggplot(data=mydata,aes(y=somevalues,x=datefield,color=category)) +
layer(geom="line")
gg + geom_vline(xintercept=mydata$datefield[120],linetype=4)
# returns just the time series plot I had before,
# interestingly the legend contains dotted vertical lines
Run Code Online (Sandbox Code Playgroud)
我的日期字段格式为"1993-07-01",属于班级Date.
这是在ggplot2 google群组上交叉发布的
我的情况是我正在处理一个输出任意数量的图形的函数(取决于用户提供的输入数据).该函数返回一个n个图的列表,我想将这些图以2 x 2的形式排列.我正在努力解决以下问题:
我目前的策略是grid.arrange从gridExtra包中使用.它可能不是最佳的,特别是因为,这是关键,它完全不起作用.这是我评论的示例代码,试验了三个图:
library(ggplot2)
library(gridExtra)
x <- qplot(mpg, disp, data = mtcars)
y <- qplot(hp, wt, data = mtcars)
z <- qplot(qsec, wt, data = mtcars)
# A normal, plain-jane call to grid.arrange is fine for displaying all my plots
grid.arrange(x, y, z)
# But, for my purposes, I need a 2 x 2 layout. So the command below works acceptably.
grid.arrange(x, y, …Run Code Online (Sandbox Code Playgroud) 随着grid.arrange我可以安排多个ggplot在网格中人物使用类似,实现了多屏图:
library(ggplot2)
library(grid)
library(gridExtra)
Run Code Online (Sandbox Code Playgroud)
然后生成一些ggplot2图
plot5 <- grid.arrange(plot4, plot1, heights=c(3/4, 1/4), ncol=1, nrow=2)
Run Code Online (Sandbox Code Playgroud)
如何获得"不平衡"2 col布局,其中第一个col中有一个绘图,第二个col中有三个绘图?我玩弄了一个'网格网格'方法,试图用grid.arrange一个网格(例如plot5,上面)绘制另一个图,但得到了:
在ArrangeGrob中出错(...,as.table = as.table,clip = clip,main = main,:输入必须是grobs!
更新:
感谢您的建议.我会考虑viewports和grid.与此同时,感谢@DWin,layOut'wq'包中的函数非常适合我Sweave文档中的编译图:

更新2:
该arrangeGrob命令(由@baptiste建议)也运行良好,看起来非常直观 - 至少很容易改变两列的宽度.它还具有不需要`wq'包的好处.
这是我的Sweave文件中的代码:
<<label=fig5plot, echo=F, results=hide>>=
plot5<-grid.arrange(plot4, arrangeGrob(plot1, plot2, plot3, ncol=1),
ncol=2, widths=c(1,1.2))
@
\begin{figure}[]
\begin{center}
<<label=fig5,fig=TRUE,echo=T, width=10,height=12>>=
<<fig5plot>>
@
\end{center}
\caption{Combined plots using the `arrangeGrob' command.}
\label{fig:five}
\end{figure}
Run Code Online (Sandbox Code Playgroud)
产生以下输出:

顺便说一下,有人告诉我为什么出现'> NA'?
我的类别需要用希腊字母命名.我正在使用ggplot2它,它可以很好地处理数据.不幸的是,我无法弄清楚如何将这些希腊符号放在x轴(刻度线)上,并使它们出现在图例中.有什么办法吗?
更新:我看了一下链接,然而,没有很好的方法来描述我想要做的事情.
我想通过使用ggplot2重现下面的情节.我可以靠近,但不能删除顶部和右边界.下面我介绍几次使用ggplot2的尝试,包括在Stackoverflow上或通过Stackoverflow找到的一些建议.不幸的是,我无法将这些建议付诸实践.
我希望有人能够纠正下面的一个或多个代码片段.
谢谢你的任何建议.
# desired plot
a <- seq(1,20)
b <- a^0.25
plot(a,b, bty = "l")
library(ggplot2)
df <- as.data.frame(cbind(a,b))
# 1. ggplot2 default
ggplot(df, aes(x = a, y = b)) + geom_point()
# 2. removes background color
ggplot(df, aes(x = a, y = b)) + geom_point() + opts(panel.background = theme_rect(fill='white', colour='black'))
# 3. also removes gridlines
none <- theme_blank()
ggplot(df, aes(x = a, y = b)) + geom_point() + opts(panel.background = theme_rect(fill='white', colour='black')) + opts(panel.grid.major = none, panel.grid.minor = …Run Code Online (Sandbox Code Playgroud) 我目前正在使用scale_brewer()填充物,这些颜色看起来很漂亮(在屏幕上和通过彩色打印机),但在使用黑白打印机时相对均匀地打印为灰色.我搜索了在线ggplot2文档,但没有看到任何关于添加纹理来填充颜色的内容.有没有官方的ggplot2方式来做这个或有人有他们使用的黑客?通过纹理,我的意思是像斜条,反向对角线条,点图案等,当黑白打印时会区分填充颜色.
我们如何将y轴更改为百分比,如图所示?我可以改变y轴范围,但我无法改变百分比.
