ggplot2中对数据分箱方法是什么意思?

R中使用stat_function和facet_wrap一起在GGPLOT2-r,图表graph,ggplot2-CodeGo.net
R中使用stat_function和facet_wrap一起在GGPLOT2
我试图绘制晶格类型的数据与GGPLOT2再叠加一个正态分布在样本数据的基础数据是多么遥远正常。我想有正常的区之上有和标准偏差为面板。
这里是一个例子:
library(ggplot2)
#make some example data
dd&-data.frame(matrix(rnorm(144, mean=2, sd=2),72,2),c(rep("A",24),rep("B",24),rep("C",24)))
colnames(dd) &- c("x_value", "Predicted_value", "State_CD")
#This works
pg &- ggplot(dd) + geom_density(aes(x=Predicted_value)) + facet_wrap(~State_CD)
所有的伟大工程和生产数据的一个很好的3面板图。如何添加在正常区之上?看来我stat_function,但这个失败:
#this fails
pg &- ggplot(dd) + geom_density(aes(x=Predicted_value)) + stat_function(fun=dnorm) + facet_wrap(~State_CD)
看来,stat_function没有得到随facet_wrap函数。我如何获得这两个很好地玩吗?
------------编辑---------
我试图从下面两个问题的答案整合的思路和我仍然不存在:
使用这两种答案,我可以一起破解这个:
library(ggplot)
#make some example data
dd&-data.frame(matrix(rnorm(108, mean=2, sd=2),36,2),c(rep("A",24),rep("B",24),rep("C",24)))
colnames(dd) &- c("x_value", "Predicted_value", "State_CD")
DevMeanSt &- ddply(dd, c("State_CD"), function(df)mean(df$Predicted_value))
colnames(DevMeanSt) &- c("State_CD", "mean")
DevSdSt &- ddply(dd, c("State_CD"), function(df)sd(df$Predicted_value) )
colnames(DevSdSt) &- c("State_CD", "sd")
DevStatsSt &- merge(DevMeanSt, DevSdSt)
pg &- ggplot(dd, aes(x=Predicted_value))
pg &- pg + geom_density()
pg &- pg + stat_function(fun=dnorm, colour='red', args=list(mean=DevStatsSt$mean, sd=DevStatsSt$sd))
pg &- pg + facet_wrap(~State_CD)
这是真的很近......除非是错的正常区绘图:
我究竟做错了什么?
本文地址 :CodeGo.net/80487/
-------------------------------------------------------------------------------------------------------------------------
1. stat_function被设计成覆盖在每一个面板的函数。 (没有办法来匹配与不同的面板的函数的)。
正如伊恩建议,最好的办法就是自己生成正常的曲线,并绘制它们作为一个单独的数据集(这是你要去什么地方错了之前-合并只是没有意义在这个例子中,如果你仔细看,你会看,这就是为什么你得到奇怪的锯齿图案)。
以下是我会去解决的问题:
dd &- data.frame(
predicted = rnorm(72, mean = 2, sd = 2),
state = rep(c("A", "B", "C"), each = 24)
grid &- with(dd, seq(min(predicted), max(predicted), length = 100))
normaldens &- ddply(dd, "state", function(df) {
data.frame(
predicted = grid,
density = dnorm(grid, mean(df$predicted), sd(df$predicted))
ggplot(dd, aes(predicted)) +
geom_density() +
geom_line(aes(y = density), data = normaldens, colour = "red") +
facet_wrap(~ state)
我认为你需要提供这似乎工作:
pg &- ggplot(dd, aes(Predicted_value)) ## need aesthetics in the ggplot
pg &- pg + geom_density()
## gotta provide the arguments of the dnorm
pg &- pg + stat_function(fun=dnorm, colour='red',
args=list(mean=mean(dd$Predicted_value), sd=sd(dd$Predicted_value)))
## wrap it!
pg &- pg + facet_wrap(~State_CD)
我们所提供的SD和每一个面板。获取面板和标准偏差是作为练习留给读者* ;)
'*'换句话说,不知道如何可以做到...
我认为最好的办法是用geom_line手工画线。
dd&-data.frame(matrix(rnorm(144, mean=2, sd=2),72,2),c(rep("A",24),rep("B",24),rep("C",24)))
colnames(dd) &- c("x_value", "Predicted_value", "State_CD")
dd$Predicted_value&-dd$Predicted_value*as.numeric(dd$State_CD) #make different by state
##Calculate means and standard deviations by level
means&-as.numeric(by(dd[,2],dd$State_CD,mean))
sds&-as.numeric(by(dd[,2],dd$State_CD,sd))
##Create evenly spaced evaluation points +/- 3 standard deviations away from the mean
dd$vals&-0
for(i in 1:length(levels(dd$State_CD))){
dd$vals[dd$State_CD==levels(dd$State_CD)[i]]&-seq(from=means[i]-3*sds[i],
to=means[i]+3*sds[i],
length.out=sum(dd$State_CD==levels(dd$State_CD)[i]))
##Create normal density points
dd$norm&-with(dd,dnorm(vals,means[as.numeric(State_CD)],
sds[as.numeric(State_CD)]))
pg &- ggplot(dd, aes(Predicted_value))
pg &- pg + geom_density()
pg &- pg + geom_line(aes(x=vals,y=norm),colour="red") #Add in normal distribution
pg &- pg + facet_wrap(~State_CD,scales="free")
本文标题 :R中使用stat_function和facet_wrap一起在GGPLOT2
本文地址 :CodeGo.net/80487/
Copyright (C) 2014 CodeGo.netR学习笔记二:(1)ggplot2添加error&bar(2)数据框的基本运算
(1)如何在ggplot2中的line
graph或者histogram中添加error bar:
参考资料:
http://docs.ggplot2.org/0.9.3.1/geom_errorbar.html
http://www./Graphs/Plotting_means_and_error_bars_(ggplot2)/
/english/wiki/ggplot2-error-bars-quick-start-guide-r-software-and-data-visualization
(2)如何把error
bar画成阴影填充的曲线?
/questions//plot-mean-and-sd-of-dataset-per-x-value-using-ggplot2
(3)ggplot2中legend的修改:
http://blog.csdn.net/superbfly/article/details/
ggplot2中的legend包括四个部分:legend.tittle, legend.text, legend.key,
legend.backgroud。针对每一部分有四种处理方式:
element_text()绘制标签和标题,可控制字体的family, face, colour, size, hjust,
vjust, angle, lineheight,当改变角度时,序将hjust调整至0或1.
element_rect()绘制主要供背景使用的矩形,你可以控制颜色的填充(fill)和边界的colour, size,
element_blank()表示空主题,即对元素不分配相应的绘图空间。该函数可以山区我们不感兴趣的绘图元素。使用之前的colour=NA,fill=NA,让某些元素不可见,但仍然占绘图空间。
element_get()可得到当前主题的设置。
theme()可在一幅图中对某些元素进行局部性修改,theme_update()可为后面图形的绘制进行全局性的修改。
&不加Legend
p+theme(legend.position='none');
删除legend.tittle
p+theme(legend.title=element_blank())
图例(legend)的位置
图例(legend)的位置和对齐使用的主题设置legend.position来控制,其值可为right,left,top,bottom,none(不加图例,或是一个表示位置的数值。这个数值型位置由legend.justfication给定的相对边角位置表示(取0和1之间的值),它是一个长度为2的数值型向量:右上角为c(1,1),左下角为c(0,0)
例如:p+theme(legend.position=”left”)
修改legend.tittle内容
p+scale_colour_hue("what does it
eat?",breaks=c("herbi","carni","omni",NA),labels=c("plants","meat","both","don't
修改尺寸大小
p+theme(legend.background=element_rect(colour="purple",fill="pink",size=3,linetype="dashed"));
p+theme(legend.key.size=unit(2,'cm'));
p+theme(legend.key.width=unit(5,'cm'));
p+theme(legend.text = element_text(colour = 'red', angle = 45,
size = 10, hjust = 3, vjust = 3, face = 'bold'))
报错:could not find function "unit"
&解决办法:library(grid)
颜色的修改以及一致性:
library(RColorBrewer);
newpalette&-colorRampPalette(brewer.pal(12,"Set3"))(length(unique(eee$name)));
p+scale_fill_manual(values=newpalette);
p+geom_bar(position="stack",aes(order=desc(name)))
frame的基本操作和相关函数:
(4.1)ddply的用法:
ddply主要用于从data frame到data frame的操作
参考资料:
http://my.oschina.net/enyo/blog/162595
/p/bfddfe29aa39
(4.2)数据基本操作:
/art/612_all.htm
这个帖子很详细,不错!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。使用ggplot2同时绘制多个密度图 - 推酷
使用ggplot2同时绘制多个密度图
数据码农最躲不过的就是做变量分析,一个个看黑白样本的分布图不过瘾,就想着把所有变量的分布都打印出来,一目了然。话说R最性感的图表库当属
,只是这厮不好伺候,展示这个图虽然只用三行代码,却着实费了一番工夫。话不多说,我知道你们要什么,上当莫!
& plots &- NULL
& for(i in colnames(train)){ plots[[i]] &- ggplot(train) + geom_density(aes_string(x = i, fill = 'is_black'), alpha = 0.5, show.legend = F) + xlab(&&) + ylab(&&); }
& plot_grid(plotlist = plots)
最终效果就是这样的,想来还真有点小酷炫呢!
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致}

我要回帖

更多关于 分箱数据 英文 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信