【问题标题】:Plotting multiple column csv data in different colors以不同颜色绘制多列 csv 数据
【发布时间】:2018-02-03 08:27:22
【问题描述】:
Year    CRMale  CRFemale    CRTotal MMale   MFemale MTotal
1972    531     529         530     527     489     509
1973    523     521         523     525     489     506
1974    524     520         521     524     488     505
...

这是我的 csv 数据格式 我将年份设置为水平轴,将分数设置为垂直轴

sat <- read.csv("Table 2_9FIXED.csv")
graph_base3 <- ggplot(data = sat, aes(x = Year, y = CRMale))

我可以创建一个包含 1 列数据的散点图,但我被困在以不同颜色同时绘制多个列。

谁能帮我解决这个问题?我对 R 完全陌生。

【问题讨论】:

    标签: r plot ggplot2


    【解决方案1】:

    您需要转换您的数据(“融化”它)。

    # Transform data using melt from reshape2 package
    library(reshape2)
    # We melt by column "Year"
    satMelt <- melt(sat, "Year")
    
    # Plot
    ggplot(satMelt, aes(Year, value, color = variable)) +
        geom_point()
    


    如果您不想使用颜色,则可以使用构面:

    ggplot(satMelt, aes(Year, value)) +
        geom_point() +
        facet_wrap(~ variable, ncol = 2)
    


    PS:这是“融化”数据的样子:

    # Year variable value
    # 1972   CRMale   531
    # 1973   CRMale   523
    # 1974   CRMale   524
    # 1972 CRFemale   529
    # 1973 CRFemale   521
    # ...
    

    编辑:我注意到您的数据中有组(例如“性别”)。

    我们可以提取这些信息:

    satMelt$gender <- sub("^CR|^M", "", satMelt$variable)
    satMelt$type <- sub(paste(unique(satMelt$gender), collapse = "|"), "", satMelt$variable)
    # Year variable value gender type
    # 1972   CRMale   531   Male   CR
    # 1973   CRMale   523   Male   CR
    # 1974   CRMale   524   Male   CR
    # 1972 CRFemale   529 Female   CR
    # 1973 CRFemale   521 Female   CR
    # 1974 CRFemale   520 Female   CR
    

    并用它来创建这样的情节:

    ggplot(satMelt, aes(Year, value, color = gender, linetype = type, shape = type)) +
        geom_point() +
        geom_line()
    

    为了让情节更具视觉吸引力,我们可以试试这个:

    ggplot(satMelt, aes(Year, value, color = gender, linetype = type)) +
        geom_point(size = 3, alpha = 0.6) +
        geom_line(size = 1, alpha = 0.8) +
        scale_x_continuous(breaks = sat$Year) +
        labs(title = "Change in value over years",
             subtitle = "By gender and type",
             y = "Value",
             color = "Gender",
             linetype = "Type") +
        theme_minimal()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      相关资源
      最近更新 更多