- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 ggplot2 创建一个带有对数轴的水平箱线图。但是, mustache 的长度是错误的。
一个最小的可重现示例:
一些数据
library(ggplot2)
library(reshape2)
set.seed(1234)
my.df <- data.frame(a = rnorm(1000,150,50), b = rnorm(1000,500,150))
my.df$a[which(my.df$a < 5)] <- 5
my.df$b[which(my.df$b < 5)] <- 5
boxplot()
, 一切安好
boxplot(my.df, log="x", horizontal=T)
my.df.long <- melt(my.df, value.name = "vals")
ggplot(my.df.long, aes(x=variable, y=vals)) +
geom_boxplot() +
scale_y_log10(breaks=c(5,10,20,50,100,200,500,1000), limits=c(5,1000)) +
theme_bw() + coord_flip()
ggplot(my.df.long, aes(x=variable, y=vals)) +
geom_boxplot() +
theme_bw() + coord_flip()
coord_trans(y = "log10")
而不是
scale_y_log10
,这将导致在转换数据之前计算统计数据。然而,
coord_trans
不能与
coord_flip
一起使用.所以这并不能解决用对数轴创建水平箱线图的问题。
最佳答案
您可以拥有 ggplot
使用 boxplot.stats
(与 base boxplot
使用的函数相同)来设置盒须和异常值的 y 值。例如:
# Function to use boxplot.stats to set the box-and-whisker locations
mybxp = function(x) {
bxp = boxplot.stats(x)[["stats"]]
names(bxp) = c("ymin","lower", "middle","upper","ymax")
return(bxp)
}
# Function to use boxplot.stats for the outliers
myout = function(x) {
data.frame(y=boxplot.stats(x)[["out"]])
}
stat_summary
中使用这些函数绘制箱线图,如下例所示:
ggplot(my.df.long, aes(x=variable, y=vals)) +
stat_summary(fun.data=mybxp, geom="boxplot") +
stat_summary(fun.data=myout, geom="point") +
theme_bw() + coord_flip()
scale_y_log10
, 和
coord_trans(y="log10")
.另外,我用过
geom_hline
在每个盒须值处添加虚线,并添加了文本以显示实际值。为了减少困惑,我删除了离群点,并且稍微淡化了箱线图,以便其他组件显示得更好。
# Set up common plot elements
p = ggplot(my.df.long, aes(x=variable, y=vals)) +
geom_hline(yintercept=mybxp(my.df$a), colour="red", lty="11", size=0.3) +
geom_hline(yintercept=mybxp(my.df$b), colour="blue", lty="11", size=0.3) +
stat_summary(fun.data=mybxp, geom="boxplot", colour="#000000A0", fatten=0.5) +
#stat_summary(fun.data=myout, geom="point") +
theme_bw() + coord_flip()
br = c(5,10,20,50,100,200,500,1000)
## Create plots
# Without log transformation
p1 = p + scale_y_continuous(breaks=br, limits=c(5,1000)) +
stat_summary(fun.y=mybxp, aes(label=round(..y..)), geom="text", size=3, colour="red") +
ggtitle("No Transformation")
# With scale_y_log10
p2 = p + scale_y_log10(breaks=br, limits=c(5,1000)) + ggtitle("scale_y_log10") +
stat_summary(fun.y=mybxp, aes(label=round(..y..,2)), geom="text", size=3, colour="red") +
stat_summary(fun.y=mybxp, aes(label=round(10^(..y..))), geom="text", size=3,
colour="blue", position=position_nudge(x=0.3))
# With coord_trans
p3 = p + scale_y_continuous(breaks=br, limits=c(5,1000)) +
stat_summary(fun.y=mybxp, aes(label=round(..y..)), geom="text", size=3, colour="red") +
coord_trans(y="log10") + ggtitle("coord_trans(y='log 10')")
coord_trans
没有翻转,因为
coord_trans
覆盖
coord_flip
.您可能可以使用类似
this SO answer 中的代码的内容。翻转情节,但我还没有在这里做。
coord_trans
也有一切都在正确的位置。请注意
coord_trans
实际上是在不改变绘制点的值的情况下改变绘图的 y 坐标系。正是空间本身被“扭曲”到了对数尺度。
scale_y_log10
,盒子在正确的位置,但 mustache 的末端在错误的位置。另一方面,与另外两幅图的比较表明,
geom_hline
的所有位置s 是正确的。另请注意,与
coord_trans
不同,
scale_y_log10
获取点本身的日志,并使用未记录的值重新标记 y 轴中断,同时保留绘制点的“空间”不变。您可以通过查看红色文本中的值来看到这一点。蓝色文本中的值是未记录的值。
scale_y_log10
只会导致 mustache 末端被错误地转换,而框值绘制在正确的位置。
关于r - ggplot boxplot - 对数轴的 mustache 长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38753628/
我正在尝试将 Mustache 与 requireJS 和 jQuery 一起使用,由于 Chrome 的控制台输出正确,它似乎正在加载到浏览器中: >$.mustache
我想弄清楚 mustache 中的偏音是如何工作的。 JS var mustacheTmpl = Mustache.render(popups, {list:true}); 弹出模板 {{#list}
我想知道是否有比我当前解决以下问题更优雅的解决方案 问题:在以下情况下,使用 Mustache 从动态数组生成动态表: 总列数未知 只有一两个列名是已知的,必须有条件地呈现 不得使用辅助函数 数据仅以
我开始查看一些 mustache 模板,但遇到了一些我不理解/无法找到解释的东西。 {{#something}}word-here={{.}}{{/something}} 有人能帮我理解什么{{.}}
我有一个代码,它呈现了一个带有一些迭代的 mustache 模板,例如: {{#items}} some html code.... {{/items}} 但我想将渲染的项目数放入迭代中,如下所示
我正在使用 Mustache 2.7.0 并第一次尝试使用 Blocks pragma。 基本上,我称之为basic.mustache {{ {{$ title}
我在文本文件中的 mustache 标签是例如“{{foo}}”。 我传递的值有一个嵌入的换行符:“aaaa\nbbbb”。 我想要的行为是输出具有: aaaa bbbb 但相反,它是 aaaa
我有如下的 JSON 字符串 { Red:10, Green: 0 } 所以我想显示以下行 10 次(如 Red: 10 ) 我如何使用 Mustache 做到这一点? 我试过了 {{# R
在 JavaScript 中: falsy: false, null, undefined, 0, -0, NaN, "" truthy: everything else, including []
我们如何在 mustache 上写以下内容? 我想检查一个变量是否存在,如果存在,我想检查该变量是否等于另一个变量。所以 这将是 PHP 等价物 if ($example && $example ==
我有一个使用 Mustache 模板的服务器渲染表单。提交表单时,如果出现错误,我会重新显示表单以及一些错误。我希望使用提交的相同值重新填充字段。 但是,我不确定如何从选择列表中标记正确的项目。这是我
我正在尝试使 Mustache JS 输出内容而不解析一些变量。例如: {{block.type}}-{{block.id}}-label-{{element.id}} 我希望它只解析 block ,
我正在使用 Mustache templating library 并尝试生成一个没有尾随逗号的逗号分隔列表,例如 red, green, blue 给定结构,使用尾随逗号创建列表很简单 { "i
我正在使用Mustache templating library并尝试生成一个逗号分隔的列表,没有尾随逗号,例如 red, green, blue 根据结构,创建带有尾随逗号的列表非常简单 { "
我正在将电子邮件模板从 Mandrill 移至 Postmark,这需要将 Handlebars 转换为 Mustachio。在 Handlebars 我有这样的事情: {{#if some_vari
是否可以检查 mustache js 中的特定值,例如 {{name}} == "James" ? 数据: json: { name: "James" } HTML: {{name}} //W
我在命令行上使用 Mustache 将 JSON 对象嵌入到 中HTML 对象中的标签。 cat sampleData.json | mustache - man_report.mustache >
我正在尝试使用 mustache 模板来呈现非常简单的表单,但是,其中一个表单具有一组单选按钮。我不知道如何在呈现表单时选择正确的单选按钮。 这是很简单的东西,我只是错过了一些东西,还是 mustac
是否有一个简单的、独立的、可移植的、现有的用于 Windows 的 Mustache 发行版,它可以让我完全按照 mustache(1) 中指定的(或尽可能接近)调用 Mustache手动的? cat
我正在尝试做这样的事情,但我不知道该怎么做: 我有一个名为 {{dropdown_}} 的 mustache 参数,另一个名为 {{number}} 我想做的是这样的: {{dropdown_{{nu
我是一名优秀的程序员,十分优秀!