【问题标题】:How to plot two subsets of a value column based on a factor column best in a scatter plot in ggplot?如何在ggplot的散点图中根据因子列最好地绘制值列的两个子集?
【发布时间】:2020-08-05 20:31:57
【问题描述】:

我想知道将值列的两个子集相互绘制的最简单方法是什么(例如,带有 ggplot 的散点图)? 示例datframe =

Intensity Factor Order
1 red 1
2 red 2
3 red 3
1 green 1
3 green 2
5 green 3

相应的值由 Order 列定义。目标是现在绘制相应的红色与绿色强度值。除了预先将数据框分成两个子集之外,在 ggplot 中是否有一种简单的方法可以做到这一点?

感谢您的见解。

【问题讨论】:

  • 你想要每个'Factor'的最大值还是最小值
  • 另外,第一个“红色”值是否对应于第一个“绿色”值?如何匹配红色和绿色?
  • 好点,忘了说。是的,顺序是相同的,由第三列定义。现在添加有问题。我想要一个散点 xy 图(红色与绿色)。

标签: r ggplot2


【解决方案1】:

我们可以重塑为“宽”格式,然后使用geom_point 进行绘图

library(dplyr)
library(tidyr)
library(ggplot2)
library(data.table)
df1 %>% 
    mutate(rn = rowid(Factor)) %>%
    pivot_wider(names_from = Factor, values_from = Intensity) %>% 
    select(-rn) %>% 
    ggplot(aes(x = red, y = green)) + 
          geom_point()

-输出

数据

df1 <- structure(list(Intensity = c(1L, 2L, 3L, 1L, 3L, 5L), Factor = c("red", 
"red", "red", "green", "green", "green")), class = "data.frame", 
row.names = c(NA, 
-6L))

【讨论】:

  • 谢谢,对我来说看起来很简单!您能解释一下为什么需要创建行号列吗?
  • @gdeniz 只是pivot_wider 不明白哪个值变成了哪一行,所以需要通过“因子”来帮助它
猜你喜欢
  • 2020-08-22
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多