- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我更新到版本 2.2.0 之前,以下代码在 ggplot2
中有效。现在我得到了 Error: Aesthetics must be either length 1 or the same as the data (30): x, y, xend, yend
。该错误是由两次 geom_segment
调用引起的。
drug1 <- c(.7, -1.6, -.2, -1.2, -.1, 3.4, 3.7, .8, 0, 2)
drug2 <- c(1.9, .8, 1.1, .1, -.1, 4.4, 5.5, 1.6, 4.6, 3.4)
d <- data.frame(Drug=c(rep('Drug 1', 10), rep('Drug 2', 10),
rep('Difference', 10)),
extra=c(drug1, drug2, drug2 - drug1))
ggplot(d, aes(x=Drug, y=extra)) +
geom_boxplot(col='lightyellow1', alpha=.3, width=.5) +
geom_dotplot(binaxis='y', stackdir='center', position='dodge') +
stat_summary(fun.y=mean, geom="point", col='red', shape=18, size=5) +
geom_segment(aes(x=rep('Drug 1', 30), xend=rep('Drug 2', 30), y=drug1, yend=drug2),
col=gray(.8)) +
geom_segment(aes(x='Drug 1', xend='Difference', y=drug1, yend=drug2 - drug1),
col=gray(.8)) +
xlab('') + ylab('Extra Hours of Sleep') + coord_flip()
更新:改进的代码:
drug1 <- c(.7, -1.6, -.2, -1.2, -.1, 3.4, 3.7, .8, 0, 2)
drug2 <- c(1.9, .8, 1.1, .1, -.1, 4.4, 5.5, 1.6, 4.6, 3.4)
d <- data.frame(Drug=c(rep('Drug 1', 10), rep('Drug 2', 10),
rep('Difference', 10)),
extra=c(drug1, drug2, drug2 - drug1))
w <- data.frame(drug1, drug2, diff=drug2 - drug1)
ggplot(d, aes(x=Drug, y=extra)) +
geom_boxplot(col='lightyellow1', alpha=.3, width=.5) +
geom_dotplot(binaxis='y', stackdir='center', position='dodge') +
stat_summary(fun.y=mean, geom="point", col='red', shape=18, size=5) +
geom_segment(data=w, aes(x='Drug 1', xend='Drug 2', y=drug1, yend=drug2),
col=gray(.8)) +
geom_segment(data=w, aes(x='Drug 1', xend='Difference', y=drug1, yend=drug2 - drug1),
col=gray(.8)) +
xlab('') + ylab('Extra Hours of Sleep') + coord_flip()
最佳答案
代码的更新版本生成数据帧 d
,如下所示:
drug1 <- c(.7, -1.6, -.2, -1.2, -.1, 3.4, 3.7, .8, 0, 2)
drug2 <- c(1.9, .8, 1.1, .1, -.1, 4.4, 5.5, 1.6, 4.6, 3.4)
d <- data.frame(Drug=c(rep('Drug 1', 10), rep('Drug 2', 10),
rep('Difference', 10)),
extra=c(drug1, drug2, drug2 - drug1))
> d
Drug extra
1 Drug 1 0.7
2 Drug 1 -1.6
3 Drug 1 -0.2
4 Drug 1 -1.2
5 Drug 1 -0.1
6 Drug 1 3.4
7 Drug 1 3.7
8 Drug 1 0.8
9 Drug 1 0.0
10 Drug 1 2.0
11 Drug 2 1.9
12 Drug 2 0.8
13 Drug 2 1.1
14 Drug 2 0.1
15 Drug 2 -0.1
16 Drug 2 4.4
17 Drug 2 5.5
18 Drug 2 1.6
19 Drug 2 4.6
20 Drug 2 3.4
21 Difference 1.2
22 Difference 2.4
23 Difference 1.3
24 Difference 1.3
25 Difference 0.0
26 Difference 1.0
27 Difference 1.8
28 Difference 0.8
29 Difference 4.6
30 Difference 1.4
由于两个原因,这种创建数据框的方法有问题:
变量drug1
和drug2
存在于全局环境和data.frame d
中。这会造成混淆、掩蔽和其他错误的可能性。
差异
与产生差异的值相关联的唯一方法是行排序。例如,第 1 行和第 11 行的值在第 21 行产生了差异。如果您以后对数据集进行任何修改,这可能会产生问题。
我建议以这样的方式创建数据框:
d2 <- data.frame(
pair = 1:10,
drug1 = c(.7, -1.6, -.2, -1.2, -.1, 3.4, 3.7, .8, 0, 2),
drug2 = c(1.9, .8, 1.1, .1, -.1, 4.4, 5.5, 1.6, 4.6, 3.4)
)
pair drug1 drug2
1 1 0.7 1.9
2 2 -1.6 0.8
3 3 -0.2 1.1
4 4 -1.2 0.1
5 5 -0.1 -0.1
6 6 3.4 4.4
7 7 3.7 5.5
8 8 0.8 1.6
9 9 0.0 4.6
10 10 2.0 3.4
有一个明确的 pair
变量链接这些值,d2 之外不存在
。drug1
和 drug2
的额外副本
然后您可以使用 tidyr
转换为 tidy/long 格式(以便与 ggplot 和建模包一起使用):
tidyr::gather(d2, drug, value, drug1, drug2)
pair drug value
1 1 drug1 0.7
2 2 drug1 -1.6
3 3 drug1 -0.2
4 4 drug1 -1.2
5 5 drug1 -0.1
6 6 drug1 3.4
7 7 drug1 3.7
8 8 drug1 0.8
9 9 drug1 0.0
10 10 drug1 2.0
11 1 drug2 1.9
12 2 drug2 0.8
13 3 drug2 1.1
14 4 drug2 0.1
15 5 drug2 -0.1
16 6 drug2 4.4
17 7 drug2 5.5
18 8 drug2 1.6
19 9 drug2 4.6
20 10 drug2 3.4
关于r - geom_segment 变长错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41078897/
我有下面的代码,它工作正常。问题是,我想添加“k”并绘制一条类似于“z”的直线,但“k”是不同数字的向量。 “k”中的每个元素都应绘制为创建的 3 个面上的一条线。如果 k 是一个奇异值,我会用不同的
在我更新到版本 2.2.0 之前,以下代码在 ggplot2 中有效。现在我得到了 Error: Aesthetics must be either length 1 or the same as t
我想使用 geom_segment 按因子组显示段簇,但 position 参数似乎没有任何作用。这是一个例子: mydata = data.frame(variable = factor(c("A"
我想弄清楚如何更改使用 geom_segment 的甘特图的边框颜色. 这是一些数据: df <- structure(list(start_int = c(0, 5, 0, 0, 9, 10, 12
我正在尝试在 ggplot 中构建网络图。两件事:1)我需要将节点放在特定的(x,y)值上。这不是问题。 2)网络图是定向的,但我需要能够显示从节点 B 到节点 A 与从节点 A 到节点 B 的差异。
使用 facet_grid 时,如何根据数据中的一个因素为 geom_segments 着色?我的方法失败了,因为颜色的分配是错误的。 这是一些数据: visual_data=data.frame(V
大家好,我需要帮助才能使用 ggplot2 获得一个不错的 geom_segment 图。 这是数据 structure(list(molecule = structure(c(1L, 1L, 2L,
ggplot(int_times,aes(x=-stim ,y=num,colour=gene)) + scale_y_continuous(breaks=int_times$num,l
我正在尝试使用 ggplot2 在直方图底部绘制一些线段,覆盖几条线段以指示分布的相关部分。我希望绿色段的厚度是灰色段的两倍,但绿色段似乎总是灰色段厚度的五倍。这是一些玩具数据和我的 ggplot2
下面的绘图代码使所有颜色的线段线会聚在离散 x 变量的中心。可以做些什么来使线段线对于每个 x 变量各自的颜色是垂直的? #~ Plot data ggplot(data = data0, aes(x
我正在制作一些室内和室外事件的相当复杂的情节,但我有点陷入困境。我想通过(Xmin、Ymin 和 Zmin)在 geom_segment 中添加对室内/室外花费的分钟数进行着色> 我的情节的步骤(见下
我正在尝试在 ggplot2 中制作一个带有箭头的绘图,看起来像这样,它是使用基本 R 图形制作的。 (颜色并不重要) 使用ggplot2: library(ggplot2) library(scal
下面的图有 2 个部分。 如何为线段添加图例? 理想情况下,最终结果有 2 个图例: 其中一个是当前的“点图例” 另一个图例是一个带有红色虚线标记为“段图例”的单个图例 这是代码 set.seed(1
我正在研究主成分分析 (PCA)。我发现ggfortify效果很好,但想做一些手动调整。 这里尝试绘制 PCA 结果如下: evec % ggplot(mapping = aes(x=PC1, y
我有两组纬度和经度变量,用于我的数据框中的大量行 (~100,000)。我正在尝试制作一个连接这两组坐标的图(即,从 latitude1,longitude1 到 latitude2,longitud
这是我的可重现示例: IND.factions <- rbind(c("Mughal Empire", "IND", "1526-1-1", "1857-1-1", "IND"),
这个问题在这里已经有了答案: geom_rect and alpha - does this work with hard coded values? (4 个回答) 去年关闭。 我在我的情节中尝试了
问题: 我想将 geom_hline 中的 geom_segment 添加到 3 个 stat_summary 点中的每一个,以确定每个物种的平均值。 当前代码: library(tidyverse)
我正在尝试通过 geom_segment 在绘图中放置一条引用线。 一个简化的例子: tryCatch({ spaghetti_smooth_ref = qplot(age,T_self, data=
我正在尝试获得类似于 Glen_b 对 this question 的回答的内容.基本上,我希望箱线图顶部有一个箭头,以指示使用 ggplot 时有更多超出比例的异常值。 我可以让情节的主要部分看起来
我是一名优秀的程序员,十分优秀!