r - 如何在ggplot2中按顺序组织散点?
问题描述
这是我正在使用的数据的简化示例:
x <- c("before", "before", "before", "before", "after","after","after","after")
y <- c(22, 25, 26, 27, 45, 67, 89, 74)
z <- c("A", "A", "A", "B", "B", "B", "C", "C")
data <- data.frame(x,y,z)
这是我的ggplot2代码:
ggplot(data, aes(x=x, y=y, color=z, shape=z)) + geom_jitter()
该图最终看起来像这样:
如何获得沿 x 轴顺序绘制的个人 A、B、C(变量 Z)的点?例如,在分类变量“after”上方,我想查看单个 B 抖动的所有点,然后查看单个 C 抖动旁边的所有点,而不是两者混合在一起的点?我无法在网上找到任何有关如何执行此类操作的示例。
为了进一步澄清,这是我希望我的图表最终看起来像的示例
解决方案
按类别抵消
要获得顺序排序,请按z
变量分组。这将为x
类别提供一个子类别z
ggplot2::ggplot(data, aes(x=x, y=y, group=z, color=z, shape=z)) + geom_jitter()
排序before
和after
不同的顺序:
您的x
变量是一个分类变量,ggplot 会自动按字母顺序排序。要覆盖此字母排序,您必须将变量定义为factor
:
x <- c("before", "before", "before", "before", "after","after","after","after")
x <- factor(x, levels = c("before", "after"))
y <- c(22, 25, 26, 27, 45, 67, 89, 74)
z <- c("A", "A", "A", "B", "B", "B", "C", "C")
data <- data.frame(x,y,z)
这有效地给出before
了 value1
和after
value 2
,以便排序行为在 x 轴上产生正确的顺序。
推荐阅读
- c - 为什么分配后 memcpy 中出现 c malloc 错误?
- c# - iPadOS 13.4 触控板 IUIPointerInteractionDelegate 方法 GetStyleForRegion 未被调用
- c - 不同形式的 printf
- python - 为什么图表上的线条有不同的起点?
- sycl - 将访问器转换为内核代码中的 C++ 指针(尤其是(int (*)[Nelem])
- java - 使用 Data_Handlers 更新数据库中的数据
- excel - 使用 VBA 和 ActiveX 减少 WithEvent 声明和 subs
- python - 为什么安装成功后win32com.client 不起作用?
- vue.js - Vuetify:为什么侧边栏覆盖在另一个元素上?
- c++ - #include " <> " 和 #include < "" > 是有效的文件包含吗?