关于如何/何时在ggplot结构中评估变量,我遇到了一个有趣的问题.
我能想到的最简单的例子就是以下(它应该将点1到10放在一个图上):
df=data.frame(x=1:10,y=1:10)
panel=ggplot() + xlim(-1,11) + ylim(-1,11)
for (i in c(1:10)) {
panel=panel+geom_point(aes(x=df$x[i],y=df$y[i]))
}
print(panel)
Run Code Online (Sandbox Code Playgroud)
这将生成一个曲线图与一个点,即,一个用于I = 10 如果我给我的另一值(在〜10范围为1),并重复该 打印(面板)命令则该特定点将被绘出.
如果我按< - c(1:10),然后是print(面板),那么所有十个点都将被绘制,就像我发布了矢量化版本一样:
ggplot(aes(x=x,y=x),data=df)+geom_point()
Run Code Online (Sandbox Code Playgroud)
在我看来,这里我只在发出print(panel)命令时进行评估.
我在一个非常复杂的情节中遇到了这个问题,我在循环遍历列表的元素,而矢量化版本并不实用.
所以,她的问题是:有没有办法强制ggplot为循环中的每一步评估i?
我正在使用..count..
转换,geom_bar
并且当我的某些类别计数较少时,得到警告
position_stack要求不重叠x间隔。
最好使用一些模拟数据来解释(我的数据涉及方向和风速,我保留与此相关的名称)
#make data
set.seed(12345)
FF=rweibull(100,1.7,1)*20 #mock speeds
FF[FF>60]=59
dir=sample.int(10,size=100,replace=TRUE) # mock directions
#group into speed classes
FFcut=cut(FF,breaks=seq(0,60,by=20),ordered_result=TRUE,right=FALSE,drop=FALSE)
# stuff into data frame & plot
df=data.frame(dir=dir,grp=FFcut)
ggplot(data=df,aes(x=dir,y=(..count..)/sum(..count..),fill=grp)) + geom_bar()
Run Code Online (Sandbox Code Playgroud)
这可以很好地工作,并且结果图显示了根据速度分组的方向频率。与此相关的是,计数最少的速度类(此处为“ [40,60]”)将有5个计数。
但是,更多的速度等级会导致警告。例如,
FFcut=cut(FF,breaks=seq(0,60,by=15),ordered_result=TRUE,right=FALSE,drop=FALSE)
Run Code Online (Sandbox Code Playgroud)
计数最少的速度类(现在为[[45,60)“)将只有3个计数,并且ggplot2会警告
position_stack需要不重叠的x间隔
并且该图将显示沿x轴分布的该类别的数据。
似乎5是一个小组要正常工作的最小人数。
我很高兴知道这是stat_bin
(geom_bar
正在使用的)功能或错误,还是我只是在滥用geom_bar
。
此外,任何建议如何解决此问题将不胜感激。
真诚的
在R中的基本绘图中,如果数据系列ggplot2中存在NA,则将绘制间隙:
举个例子看:
df=data.frame(x=c(1:10),y=c(1:10))
df[5:7,]=NA
plot(df,type="l")
Run Code Online (Sandbox Code Playgroud)
但是,ggplot2会删除缺失值并绘制一条没有间隙的直线.
ggplot(data=df,aes(x,y))+geom_line()
Run Code Online (Sandbox Code Playgroud)
我想保持差距.它们是我正在使用的数据中的重要信息.有没有一种简单的方法告诉ggplot2停止忽略差距?
尝试使用Hadleys devtools包我收到了一个认证错误:
install_github("devtools")
Installing github repo(s) devtools/master from hadley
Installing devtools.zip from https://github.com/hadley/devtools/archive/master.zip
Error in function (type, msg, asError = TRUE) :
Peer certificate cannot be authenticated with given CA certificates
Run Code Online (Sandbox Code Playgroud)
谷歌搜索告诉我这是一个卷曲问题.我不近了.从命令行使用"git"我可以从github中获取我想要的任何内容, - 我没有收到此错误.它只在我尝试从R连接到github时出现
我使用的是ubuntu 12.10,libcurl 7.22.0和R 3.0
有谁知道如何解决这个问题?
真诚的H.