r - R改变路径geom_path在ggplot中通过
问题描述
我正在为我创建的情节而苦苦挣扎。y 轴按我想要的方式排序,但正如您所见,绘图线在 A1 和 B17 之间停止并连接顶部和底部点,我想改变这两个点(连接 A1和B17,停止顶部和底部连接)。
我在想有一种方法可以手动告诉 geom_path 连接什么而不连接什么,但我不知道该怎么做。
library("dplyr")
library("ggplot2")
v1 <- c(rep("a",27), rep("b",27), rep("c",27), rep("d",27), rep("e",27), rep("f",27), rep("g",27))
v2 <- rnorm(189)
v3 <- rep(c(18:27,1:17),7)
v4 <- rep(c("A1","A2","A3","A4","A5","A6","A7","A8","A9","A10",
"B1","B2","B3","B4","B5","B6","B7","B8","B9","B10",
"B11","B12","B13","B14","B15","B16","B17"),7)
df <- data.frame(v1,v2,v3,v4)
df %>% group_by(v2) %>%
ggplot(aes(y = v3, x = v2, col = v1)) +
geom_point() + geom_path() +
scale_y_continuous(breaks=seq(1,27,1), labels=v4[c(11:27,1:10)])
解决方案
试试这个:
geom_path
按照它们在数据中出现的顺序绘制点,因此需要根据您想要的顺序调整数据。
v1
此示例通过使用因子将 y 值排序,然后通过排列变量和来排列数据框中的数据v4
。
用于set.seed
使答案可重现。
library(dplyr)
library(ggplot2)
set.seed(123)
v1 <- c(rep("a",27), rep("b",27), rep("c",27), rep("d",27), rep("e",27), rep("f",27), rep("g",27))
v2 <- rnorm(189)
v3 <- rep(c(18:27,1:17),7)
v4 <- rep(c("A1","A2","A3","A4","A5","A6","A7","A8","A9","A10",
"B1","B2","B3","B4","B5","B6","B7","B8","B9","B10",
"B11","B12","B13","B14","B15","B16","B17"),7)
v4_order <- c(paste0("B", 1:17), paste0("A", 1:10))
df <-
data.frame(v1,v2,v3,v4) %>%
mutate(v4 = factor(v4, levels = v4_order)) %>%
arrange(v1, v4)
df %>%
group_by(v2) %>%
ggplot(aes(y = v3, x = v2, col = v1)) +
geom_point() +
geom_path() +
scale_y_continuous(breaks=seq(1,27,1), labels=v4[c(11:27,1:10)]) +
theme_bw()
由reprex 包于 2021-05-04 创建 (v2.0.0 )
推荐阅读
- javascript - jQuery Burger 菜单不起作用且不可点击
- javascript - 下拉列表移动其他元素
- python - 如何将 .gif 粘贴到 .png 图像上并将生成的文件另存为 .gif?
- css - iPhone 不支持 CSS 网格行
- api - 一段时间后如何删除发布到松弛的消息?
- python - 在 python 中编写正则表达式来匹配两个特定的单词,允许设置单词之间的数量
- c++ - 用于嵌入式系统的 C++ 事件驱动状态机
- python - 如何组合单个数组中的值,由空格分隔(如矩阵)并由方括号 [] 组合
- java - Java Set 移除“复杂对象”
- selenium - selenium.WebDriverException:无法访问 chrome