- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:
ggplot 手册明确指出 scale_y_log10()
和 coord_trans(y="log10")
表现不同。第一个转换数据,第二个转换坐标。因此,如果您必须在对数图中添加误差线,则不能使用前者,因为实际比例不是线性的,并且误差的计算必须在对数变换之前进行,而不是在对数变换之后进行。
但是,当将误差线(或其他范围)添加到以对数刻度绘制的某些数据时,存在某些范围将达到零并且绘图失败的风险。在这种情况下,绘制的变量不可能低于 0,因此可以将这些值安全地切割为任意低的数字,这样绘图就不会失败。
例子:
获取示例数据框:
url <- "https://copy.com/cfNBrcTLEfjiYXXa/d_dataframe.Rdata?download=1"
download.file(url, "d_dataframe.Rdata", method="curl")
load("d_dataframe.Rdata")
library(ggplot2)
p <- ggplot(d, aes(x=x, y=PDF))
查看对数刻度中的数据:
p + geom_point(aes(colour=model)) + scale_y_log10()
p + geom_point(aes(colour=model)) + coord_trans(y="log10")
一切正常,数据看起来与 coord_trans() 和 scale_y_log10() 相同。但是,如果我添加一个摘要方法:
p + stat_summary(fun.data = "mean_se", mult = 2) + scale_y_log10()
以上并不能正确代表实际的标准误差,但是:
p + stat_summary(fun.data = "mean_se", mult = 2) + coord_trans(y="log10")
无法绘制,因为其中一个摘要(在这种情况下我使用标准误差)达到 0(或更少)并且对数刻度失败,通常情况下:
Error in if (zero_range(range)) { : missing value where TRUE/FALSE needed
设置 y 限制不起作用,因为一些点范围被简单地删除:
p + stat_summary(fun.data = "mean_se", mult = 2) + coord_trans(y="log10", limy=c(1e-10, 1.1))
我不希望这些线被删除,而只是为了到达图表的底部,以表明它们低于 0。
geom_linerange()
绘制它们。或类似。但使用能力
stat_summary()
非常方便快捷,并允许快速更改绘制的统计数据。同样的考虑也适用于
geom_smooth()
.
stat_summary()
/
geom_smooth()
仍然以对数刻度绘制数据?
maxf <- function(dati) {mean(dati) + 2*sd(dati)}
minf <- function(dati) {max(10e-8, mean(dati) - 2*sd(dati))}
然后使用:
stat_summary(fun.y = mean, fun.ymin=minf, fun.ymax=maxf) + coord_trans(y="log10")
但是,每次我改变对汇总误差的看法时都必须对此进行调整(例如,如果我选择标准误差而不是标准差),并且不可能(?)对
geom_smooth()
使用这种方法.
最佳答案
一个简单且合理可行的解决方案是定义 maxf
和 minf
作为将函数作为参数的嵌套函数定义。
# Defining minf and maxf to take functions as input
minf <- function(f){function(dati) {max(1e-8, mean(dati) - f(dati))}}
maxf <- function(f){function(dati) {mean(dati) + f(dati)}}
# A plot that works
p + stat_summary(fun.y = mean, fun.ymin=minf(sd), fun.ymax=maxf(sd))
+ coord_trans(y="log10")
# If you change your mind and want something besides sd
se <- function(x){sd(x)/sqrt(length(x))}
p + stat_summary(fun.y = mean, fun.ymin=minf(se), fun.ymax=maxf(se))
+ coord_trans(y="log10")
minf
和
maxf
如果你想要的误差线不是某种形式的均值加/减,你必须定义你的
f
功能是能够采用单个向量输入来给出向量输出。但我认为这比总是重新定义要好一点
minf
和
maxf
一直以来,为了一切。
关于r - 使用 stat_summary : summary range reaches zero 以对数刻度绘制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30892670/
我学习 SDL 二维编程已有一段时间了,现在我想创建一个结合使用 SDL 和 OpenGL 的程序。我是这样设置的: SDL_Init(SDL_INIT_VIDEO); window = SDL_Cr
尝试查找可在地块中使用的不同类型项目的列表 来自不同样本的投影类型: projection = list(type = "equirectangular") projection = list(typ
我正在尝试使用 Java Graphics API 绘制 GIF,但无法使用下面的代码成功绘制 GIF。仅绘制 GIF 的第一张图像或缩略图,但不播放。 public void paintCompon
我目前正在使用 JFrame 并尝试绘制一个矩形,但我不知道如何执行代码 paint(Graphics g),如何获取 Graphics 对象? package com.raggaer.frame;
这个领域的新手,希望得到一些帮助。 我有一个"Missile.java" 类,我在那里画东西。我想绘制一个 ImageView,我正在使用以下代码: ImageView v = (ImageView)
下面列出了圆形的例子 这是我的 JavaScript 代码。 最佳答案 假设您的 randomColor 是正确的,您只需要: 从 canvas.onclick 中移除 context.clearR
我在绘制和缩放 ImageView 时遇到问题。请帮帮我.. 当我画一些东西然后拖动或缩放图像时 - 绘图保留在原处,如您在屏幕截图中所见。而且我只需要简单地在图片上绘图,并且可以缩放和拖动这张图片。
我们可以在形式之外绘制图像和文本...我的意思是在字面上... 我知道问这个问题很愚蠢但是我们能不能... 最佳答案 您可以通过创建表单并将其 TransparentColor 属性设置为背景色来“作
我在绘制/布局期间收到 3 个对象分配警告 super.onDraw(canvas); canvas.drawColor(Color.WHITE); Paint textPaint = new Pai
我有一个示例时间序列数据框: df = pd.DataFrame({'year':'1990','1991','1992','1993','1994','1995','1996',
我试图想出一种简洁的方法来绘制 R 数据框中所有列的 GridView 。问题是我的数据框中既有离散值又有数值。为简单起见,我们可以使用 R 提供的名为 iris 的示例数据集。我会使用 par(mf
我有一个由 10 列和 50 行组成的 data.frame。我使用 apply 函数逐列计算密度函数。现在我想绘制我一次计算的密度。 换句话说,而不是绘图... plot(den[[1]]) plo
我想知道我们如何才能在第一个和第二个组件之外绘制个人,如下所示: 最佳答案 这可能有效: pc.cr <- princomp(USArrests, cor = TRUE) pairs(pc.cr$lo
我是Pandas和matplotlib的新手,想绘制此DataFrame season won team matches pct_won 0 20
我正在尝试为 distplot 子图编写一个 for 循环。 我有一个包含许多不同长度列的数据框。 (不包括 NaN 值) fig = make_subplots( rows=len(asse
我想创建一个具有密度的 3d 图。 我使用函数 density 首先为特定的 x 值创建一个二维图,然后该函数创建密度并将它们放入 y 变量中。现在我有第二组 x 值并将其再次放入密度函数中,然后我得
全部, 我一直在研究全局所有 MTB 步道的索引。我是 Python 人,所以对于所有涉及的步骤,我都尝试使用 Python 模块。 我能够像这样从 OSM 立交桥 API 中获取关系: from O
我正在使用 e1071 包中的支持向量机对我的数据进行分类,并希望可视化机器实际如何进行分类。但是,在使用 plot.svm 函数时,出现无法解决的错误。 脚本: library("e1071") d
我制作了以下图表,它是使用 xts 对象创建的。 我使用的代码很简单 plot(graphTS1$CCLL, type = "l", las = 2, ylab = "(c)\nCC for I
在绘制状态图时,您如何知道哪些状态放在框中,哪些状态用于转换箭头?我注意到转换也是状态。 我正在查看 this page 上的图 1 : 最佳答案 转换不是状态。转换是将对象从一种状态移动到下一种状态
我是一名优秀的程序员,十分优秀!