使用 stat_summary 将均值和 ci 与箱线图一起绘制到图上
p1 <- ggplot(data=df, aes(x=group, y=metric ) ) +
geom_boxplot(outlier.shape = NA, fill = fill, color=line, alpha = 0.5) +
stat_summary(fun.data=mean_cl_normal, aes(color = "Mean and CI"))
Run Code Online (Sandbox Code Playgroud)
除此之外,我还要求限制 y 轴以避免显示超出范围的值。这是通过
p1 <- p1 + scale_y_continuous(limits =c(lower.limit,upper.limit) )
Run Code Online (Sandbox Code Playgroud)
但是,观察到应用限制时,图中所示的平均值与未应用限制的情况不同。这是预期的工作方式吗?似乎 stat_summary 只包括通过应用的限制内的点scale_y_continuous
stat_summary即使应用了轴限制,有没有一种方法可以使用包括图中限制之外的点来获得均值和 ci ?
遵循R 食谱中的以下示例
dat <- data.frame(
time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")),
total_bill = c(14.89, 17.23)
)
ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) +
geom_bar(colour="black", stat="identity") +
guides(fill=FALSE)
Run Code Online (Sandbox Code Playgroud)
如何添加total_bill 的值(14.89、17.23)以显示在每个条形内部的顶部,并将值四舍五入到小数点后一位,例如 - 14.9、17.2
通过数据框df和列,col_name我使用下面的函数来生成直方图,如下图所示。
myHistogramDensity <- function(df, col_name) {
p1 <- ggplot(df, aes_string(x=col_name)) +
geom_histogram(aes(y=..density..), binwidth=1, colour="black", fill="white")
p1 <- p1 + scale_y_continuous(labels=percent)
p1 <- p1 + annotation_custom(tableGrob(myMinMaxMed(df, col_name), rows = NULL),
xmin=10, xmax=13, ymin=0.5, ymax=0.6)
return (p1)
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个如下所示的直方图。
如何让 x 轴显示 中存在的所有离散值的标签col_name?
在Linux bash shell中,我使用以下命令将纯十六进制转储转换为二进制
$ echo "8cd59ef53c9aaa68311b73767e0975e7" | xxd -r -p > xxd_out.bin
Run Code Online (Sandbox Code Playgroud)
当我在文本查看器中打开文件时,它看起来像 ŒÕžõ<šªh1sv~ uç
或在xxd中
$ xxd -b xxd_out.bin
00000000: 10001100 11010101 10011110 11110101 00111100 10011010 ....<.
00000006: 10101010 01101000 00110001 00011011 01110011 01110110 .h1.sv
0000000c: 01111110 00001001 01110101 11100111 ~.u.
Run Code Online (Sandbox Code Playgroud)
或在Notepad ++ Hex-Editor(插件)视图中

如何在Ruby中获得相同的二进制输出?有没有可用的库xxd -r -p?
我正在将Angular 2应用程序与Rails 5.1 API后端集成在一起。
我的Angular模型中有一个Comment具有message和date属性的模型。但是,在我的Rails模型中Comment,连同message我拥有的属性created_at和via updated_at自动提供的属性。ActiveRecord::Migrationt.timestamps
我使用ActiveModel::Serializer会对API反应变量和更好地控制我comment_serializer我想包括date在地方的created_at在每个评论API响应GET /comments,GET /comments/:id等等,这样的角度模式不必改变-我怎么去这个假设这是正确的做法?
另外,当我从Angular客户端添加注释时,我希望将模型中的date属性Comment映射到Rails created_at中的相应Comment模型中-我该如何处理?
我在本文后面使用了faceting,除了使用某个数据子集删除一些行.
# create a dataset
specie=c(rep("sorgho" , 3) , rep("poacee" , 3) , rep("banana" , 3) , rep("triticum" , 3) )
condition=rep(c("normal" , "stress" , "Nitrogen") , 4)
value=abs(rnorm(12 , 0 , 15))
data=data.frame(specie,condition,value)
# remove some rows
data=data[c(1:2,5:6,7,9,11:12),]
# Grouped
ggplot(data, aes(fill=condition, y=value, x=specie)) +
geom_bar(position="dodge", stat="identity")
# Faceting
ggplot(data, aes(y=value, x=specie, color=specie, fill=specie)) +
geom_bar( stat="identity") +
facet_wrap(~condition)
Run Code Online (Sandbox Code Playgroud)
这给出了如预期的以下图.我需要从下面的每个图中删除空标签 - 例如,sorgho从第一个图poacee和triticum第二个图等等.
在这里使用JsFiddle ,我需要每隔1s更改一个div的innerHTML,其中包含100个元素的数组中的值.我正在使用循环遍历数组的元素,然后使用每1000ms setTimeout更新innerHTML #number.但是我看到的是元素在1000ms后立即更新.
let num = 100
let data = [];
for (let i = 0; i < num; i++) {
data.push(Math.random() * 100);
}
console.log(data);
function loadScript(){
console.log(`Calling loadScript`);
let elm = document.getElementById("number");
for(let i = 0; i < data.length; i++){
setTimeout(() => {
console.log(`Setting innerHTML as ${data[i]}`);
elm.innerHTML = data[i].toString();
},1000);
}
}
loadScript();
Run Code Online (Sandbox Code Playgroud) 我用来ggplot生成带有拟合线的散点图,如下所示
ggplot(df, aes(x=colNameX, y=colNameY)) +
geom_point() +
geom_smooth(method=loess, se=T, fullrange=F, size=1) + ylim(0,5)
Run Code Online (Sandbox Code Playgroud)
鉴于此,想要将上面概括为一个采用以下参数的函数
scatterWithRegLine = function(df, xColName, yColName, regMethod, showSe, showFullrange, size, yAxisLim) {
# How should I use the variables passed into the function above within ggplot
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以按如下方式调用该函数
scatterWithRegLine(df, "mpg", "wt", "loess", TRUE, FALSE, 1, c(0,5))
Run Code Online (Sandbox Code Playgroud) 使用如下数据框:
set.seed(100)
df <- data.frame(id = sample(1:5, 6, replace = TRUE),
val1 = rep(c("true", "false"), 3),
val2 = sample(c("true", "false"), 6, replace = TRUE))
id val1 val2
1 31 true false
2 26 false true
3 56 true false
4 6 false true
5 47 true false
6 49 false false
Run Code Online (Sandbox Code Playgroud)
需要改变在COL的值val1和val2以TRUE(R逻辑真),如果值"true"和FALSE如果值是"false".
这可以通过
df$val1 <- df$val1 == "true"
df$val2 <- df$val2 == "true"
Run Code Online (Sandbox Code Playgroud)
虽然上面的工作,我有一个案例,列数运行到100s.因此需要一种方法来指定要变异的列 - df[,2:3]如上例所示.虽然基础R解决方案是首选,但其他人欢迎.