- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 geom_segment()
将 y 轴点映射到 x 轴,然后使用 facet_wrap
将数据分成两个图;然而,y 轴点显示在两个图上。
我怎样才能只有与每个 facet_wrap
相关的必要 y 轴点?
示例代码
dat <- structure(list(temp = c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3,
4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5), rev = c(-5,
-11, -20, -29, -40, -9, -20, -32, -45, -57, -12, -24, -37, -50,
-62, -7, -20, -36, -52, -67, -5, -13, -23, -35, -47, -12, -24,
-36, -48, -58), type = c("Type 1", "Type 1", "Type 1", "Type 1",
"Type 1", "Type 1", "Type 1", "Type 1", "Type 1", "Type 1", "Type 1",
"Type 1", "Type 1", "Type 1", "Type 1", "Type 2", "Type 2", "Type 2",
"Type 2", "Type 2", "Type 2", "Type 2", "Type 2", "Type 2", "Type 2",
"Type 2", "Type 2", "Type 2", "Type 2", "Type 2"), model = c("A",
"A", "A", "A", "A", "B", "B", "B", "B", "B", "C", "C", "C", "C",
"C", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "C", "C",
"C", "C", "C")), .Names = c("temp", "rev", "type", "model"), row.names = c(NA,
-30L), class = "data.frame")
p1 <- ggplot(dat, aes(temp, rev, color = model)) +
geom_line() + geom_point() + geom_segment(aes(x = 0, xend = temp, yend = rev), linetype = "dashed", color = "grey") +
facet_wrap(~type, scales = "free") + scale_y_continuous(breaks = dat$rev)
p1
绘图
最佳答案
我编造了虚拟数据,因为出于某种原因,将您的 dput
粘贴到我的控制台中会使它不愉快。
library(dplyr)
df <- expand.grid(temp = 1:5, model = LETTERS[1:3], type = 1:2) %>%
group_by(model, type) %>%
mutate(rev = -sort(sample.int(20, length(temp))))
# this is equivalent to your data as-is, structurewise
df.labeled <- df %>%
ungroup() %>% group_by(type, rev) %>%
mutate(label = c(rev[1], rep(NA, length(rev) - 1)))
在这里,我为每个组面板中显示的每个 y 值创建了一个组。然后我创建一个 label
列,其中包含对该 y 值的 1 个观察值,并用 NA
填充。因此,如果一个面板有两个模型,每个模型的 rev
都是 -5
,那么现在它将是 -5, NA
而不是 -5,-5
。为什么我这样做会在下面变得更清楚。
ggplot(df.labeled, aes(temp, rev, color = model)) +
geom_segment(aes(xend = 0, yend = rev), linetype = "dashed", color = "grey") +
geom_text(aes(label = label, x = -0.1), colour = "black", hjust = 1) +
geom_vline(xintercept = 0) +
geom_point() + geom_line() + facet_grid(~type) +
scale_y_continuous(breaks = NULL) +
scale_x_continuous(limits = c(-0.5, NA)) +
theme_bw() + theme(panel.grid = element_blank())
如果我留下了重复项(此处为 -7,类型 1 为 -15,类型 2 为 -11),geom_text
将是杂乱无章的粗体模糊。重复的文本标签在 ggplot2
中呈现不佳。由于不可能真正按照您想要的方式进行,因此我们在这里只是为每个面板制作一个假比例。如果您不喜欢数字左侧的 y 轴上有一条额外的线,可以将其删除:
... +
theme(panel.grid = element_blank(),
panel.border = element_blank(),
axis.line.x = element_line())
关于使用 facet_wrap 和 geom_segment 删除不必要的 y 轴点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45778044/
我刚刚编写了这些代码,但输出不同。第二个代码的输出符合我的预期,但第一个代码的输出不正确。但为什么呢? def fib(n): x = 0 y = 1 print x
#include #include #define CUBE(y)y*(y*y) main() { int j; j = CUBE(-2+4);
这个问题在这里已经有了答案: Multiple assignment and evaluation order in Python (11 个答案) 关闭 1 年前。 我看到下面的代码,但不知道它做
我正在阅读 book , 并讲了 typeclass Eq 的定义 有两个功能== , /=在等式中,它们被实现为: x == y = not (x /= y) x /= y = not (
我最近参加了一个代码力量竞赛。在比赛的编辑部分,我看到了按位运算符之间的一种美妙关系,即 x + y = x & y + x |是的我还不知道证据。我拿了几个数字来看看这个等式是否正确。我很高兴知道这
我使用 CGRectMake(x,x,x,x) 在我的 View 中放置了一个按钮,当然 x 是位置和大小。当我使用 -(BOOL)shouldAutoRotate... 旋转 View 时,我想将按
this.x = (Math.random()*canvasWidth); this.y = (Math.random()*canvasHeight); (1) this.shift = {x: th
我想将此代码运行为“if 'Britain' or 'UK' in string do stuff, but don't do stuff if "Ex UK" 在字符串中": #Case insen
早上好,我是新来的,我带来了一个小问题。我无法针对以下问题开发有效的算法:我需要找到三个正数 x、y 和 z 的组合,以便 x + y、x - y、y + z、y - z、x + z 和 x - z
我现在正在使用 C++ 编写方案的解释器。我有一个关于定义和 lambda 的问题。 (define (add x y) (+ x y)) 扩展为 (define add (lambda (x y)
我正在尝试使用一台主机通过 FTP 将内容上传到另一台主机。 “我不会打开到 172.xxx.xxx.xxx(仅到 54.xxx.xxx.xxx)的连接”甚至不相关,因为我没有连接到那个主持人。这是托
在 Python 中,使用 [] 解包函数调用有什么区别? , 与 ()还是一无所有? def f(): return 0, 1 a, b = f() # 1 [a, b] = f() # 2
给定方程 z = z(x,y) 2 个表面 I和 II : z_I(x, y) = a0 + a1*y + a2*x + a3*y**2 + a4*x**2 + a5*x*y z_II(x, y)
几年前我有这个面试问题,但我还没有找到答案。 x 和 y 应该是什么才能形成无限循环? while (x = y && x != y) { } 我们尝试了 Nan,infinity+/-,null f
我正在尝试使用 Camel FTP Producer 将文件发送到第三方 ftp 服务器(似乎由 Amazon 托管),但遇到了一个问题,写入文件失败,并显示:文件操作失败...主机尝试数据连接 x.
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
我正在使用 torch.tensor.repeat() x = torch.tensor([[1, 2, 3], [4, 5, 6]]) period = x.size(1) repeats = [1
#include int main() { int x = 9; int y = 2; int z = x - (x / y) * y; printf("%d", z
我很难理解先有定义然后有两个异或表达式的含义。这个定义的作用是什么? 我尝试发送 x=8, y=7,结果是 x=15 和 y=8为什么会这样? 这是程序: #define FUNC(a,b) a^=b
我正在尝试使用 SIMD 优化此功能,但我不知道从哪里开始。 long sum(int x,int y) { return x*x*x+y*y*y; } 反汇编函数如下所示: 4007a0
我是一名优秀的程序员,十分优秀!