【问题标题】:Plot lines to group points绘制线对点进行分组
【发布时间】:2016-11-24 23:03:36
【问题描述】:

这是我的 csv 文件中的数据:

Tx, Varx, Scale, Val1, Val2
A, VAR1, 5, 516, 2
A, VAR1, 10, 447.4, 5
A, VAR1, 15, 294, 8
A, VAR1, 20, 217.2, 12

A, VAR2, 5, 675.4, 4
A, VAR2, 10, 423.2, 9
A, VAR2, 15, 276, 12
A, VAR2, 20, 200, 15

B, VAR1, 5, 624, 6
B, VAR1, 10, 465.2, 13
B, VAR1, 15, 315.2, 16
B, VAR1, 20, 234.8, 18

B, VAR2, 5, 518.8, 8
B, VAR2, 10, 443, 17
B, VAR2, 15, 278.4, 20
B, VAR2, 20, 217.8, 24

我想绘制线(不仅是点)以区分 Varx 和 Tx 值。我正在尝试使用此代码进行绘图:

data_table = read.csv("PATH/file.csv",check.names=FALSE,header=T,sep=",")
data_table$NScale <- as.numeric(as.character((data_table$Scale)))
ggplot(data_table, aes(x=NScale, y=Val2, colour=Tx, shape=Varx, linetype=Varx, group=Tx)) + geom_point()

当我尝试使用 geom_line()、geom_path() 绘制连接蓝色三角形、红色三角形、红色圆圈、蓝色圆圈的线时,会显示一条错误消息:

Error: geom_path: If you are using dotted or dashed lines, colour, size and linetype must be constant over the line

如何创建按形状和颜色分组的线条?我尝试了几种方法,但仍然没有得到它。有什么问题?

【问题讨论】:

    标签: r grouping lines


    【解决方案1】:

    您应该尝试创建一个新的“分组”变量,并区分“点”和“线”的绘图方式。

    我在这里使用 dplyr 完成了这项工作,但您也可以使用 base R 完成这项工作:

    library(dplyr)
    
    data_table <- data_table %>% 
      rowwise() %>%
      mutate(TxVarxgroup = paste0(Tx, Varx, collapse=""))
    
    ggplot(data_table) + 
      geom_point(aes(x=NScale, y=Val2, colour=Tx, shape=Varx)) + 
      geom_line(aes(x=NScale, y=Val2, group=TxVarxgroup))
    

    【讨论】:

    • 非常感谢。你的回答很有帮助。其实我用的是geom_line(aes(x=NScale, y=Val2, colour=Tx, shape=Varx, linetype=Varx))
    • 仅供参考,geom_line 不理解 shape 的审美,所以它实际上并没有做任何事情:P
    • 对! geom_line(aes(x=NScale, y=Val2, colour=Tx, linetype=Varx)) 谢谢!
    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 2017-09-24
    • 2013-01-03
    • 2019-03-10
    • 1970-01-01
    • 2015-09-25
    • 2017-05-24
    • 1970-01-01
    相关资源
    最近更新 更多