【问题标题】:Scatter plot with column names on x-axis with classes带有类的 x 轴上的列名散点图
【发布时间】:2019-06-25 12:23:16
【问题描述】:

我想制作一个散点图,其中 x 轴是离散的(星期几),y 轴是连续的(值)和一个为每个数据点提供颜色的类指示器。

类似这样:Plotting column names as x-axis in R

但我不想使用数据中的所有列,颜色是基于我不想要的观察数。

示例数据:

DAT = data.frame(
  person = c(1:5),
  Mon = c(100, 98, 95, 99, 93),
  Tues = c(95, 88, 90, 91, 87),
  Wed = c(85, 80, 86, 81, 80),
  Thurs = c(84, 80, 77, 75, 74),
  Fri = c(66, 50, 20, 0, 72),
  Score = c("Y","Y","N","N","N")
)

ggplot(DAT, aes(x = c(Mon, Tues, Wed, Thurs, Fri), y = values, color = Score)) + geom_point()

我的尝试/pesuedo ggplot 代码不起作用,但希望能对我想要完成的工作有所了解。

我尝试将 Mon-Fri 设为数字 (1,2,3,4,5),这样这将是我的 x 坐标,值将是 y 坐标,但这意味着行数的 5 倍。 .

有什么想法吗?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    首先:您的数据是“宽的”(以天为列)。最好让它“长”(一列代表天数,另一列代表值)。

    然后:您需要对日期进行排序 - 将变量设为因子并设置级别。

    tidyr::gather() 长数据,dplyr::mutate 排序天数。

    library(dplyr)
    library(tidyr)
    library(ggplot2)
    
    DAT %>% 
      gather(Day, Value, -person, -Score) %>% 
      mutate(Day = factor(Day, levels = c("Mon", "Tues", "Wed", "Thurs", "Fri"))) %>%
      ggplot(aes(Day, Value)) + 
        geom_point(aes(color = Score)) 
    

    【讨论】:

      【解决方案2】:

      你可以融化你的数据然后绘制:

      library(ggplot2)
      library(reshape2)
      
      DAT = data.frame(
        person = c(1:5),
        Mon = c(100, 98, 95, 99, 93),
        Tues = c(95, 88, 90, 91, 87),
        Wed = c(85, 80, 86, 81, 80),
        Thurs = c(84, 80, 77, 75, 74),
        Fri = c(66, 50, 20, 0, 72),
        Score = c("Y","Y","N","N","N")
      )
      
      DAT.melt = melt(DAT,id=c("person","Score"))
      
      ggplot(DAT.melt, aes(x = variable, y = value, color = Score)) + geom_point()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-09
        • 2018-06-19
        • 1970-01-01
        • 1970-01-01
        • 2018-07-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多