【问题标题】:R: How Plot an Excel Table(Matrix) with RR:如何用 R 绘制 Excel 表(矩阵)
【发布时间】:2015-07-29 09:02:51
【问题描述】:

我遇到了这个问题,我还没有找到解决方法。我想在“DHT + Procymidone”的函数中绘制所有值MW1MW2MW3。如何在图形中绘制所有这些值,以便获得 3 条不同的曲线(以不同的颜色和不同的数字,如曲线 1、2、...)?我希望 X-Values("DHT + Procymidone") 的标签像 -10, -9, ... , -4 而不是 1,00E-10, ...

DHT + Procymidone   MW 1                MW 2                MW 3
1,00E-10            114,259526780335    111,022461066274    213,212408408682
1,00E-09            115,024187788314    111,083316791613    114,529425136628
1,00E-08            110,517449986348    107,867941606743    125,10230718665
1,00E-07            100,961311263444    98,4219995773135    116,045168653416
1,00E-06            71,2383604211297    73,539659636842     50,3213799775309
1,00E-05            20,3553333652104    36,1345771905088    15,42260866106
1,00E-04            4,06189509055904    18,1246447874679    10,1988107887318

【问题讨论】:

    标签: r excel matrix draw curve


    【解决方案1】:

    为方便起见,我缩短了您的数据框,所以这里有一个例子:

    mydat <- data.frame(DHT_Procymidone = c(-10, -9, -8, -7, -6, -5, -4),
                        MW1 = c(114, 115, 110, 100, 72, 20, 4),
                        MW2 = c(111, 111, 107, 98, 73, 36, 18),
                        MW3 = c(213, 114, 123, 116, 50, 15, 10))
    
    library(tidyr)
    library(ggplot2)
    mydf <- gather(mydat, "grp", "MW", 2:4)
    
    ggplot(mydf, aes(x = DHT_Procymidone, y = MW, colour = grp)) + geom_line()
    

    给出以下情节:

    要使用 ggplot,您的数据需要是长格式的。 gather 为您执行此操作,将列 MW1-MW3 附加到一列中,而列名作为新列值添加到 grp 列中。该组列允许识别不同的组,即图中不同颜色的线。

    根据DHT + Procymidone 的类型,您可以,例如使用 format(..., scientific = FALSE) 转换为数字,但是,这将导致 -0.0000000001(而不是 -10)。

    但是,如果此数据列是字符向量(您可以使用 as.character 强制转换),这可能会起作用:

    a <- "1,00E-10"
    sub("1,00E", "", a, fixed = TRUE)
    
    > [1] "-10"
    

    【讨论】:

      【解决方案2】:

      作为不依赖 ggplot 的 @Daniel 的替代答案(感谢 Daniel 提供可重现的数据)。

      mydat <- data.frame(DHT_Procymidone = c(-10, -9, -8, -7, -6, -5, -4),
                          MW1 = c(114, 115, 110, 100, 72, 20, 4),
                          MW2 = c(111, 111, 107, 98, 73, 36, 18),
                          MW3 = c(213, 114, 123, 116, 50, 15, 10))
      
      plot(mydat[,2] ~ mydat[,1], typ = "l", ylim = c(0,220), xlim = c(-10,-2), xlab = "DHT Procymidone", ylab = "MW")
      lines(mydat[,3] ~ mydat[,1], col = "blue")
      lines(mydat[,4] ~ mydat[,1], col = "red")
      legend(x = -4, y = 200, legend = c("MW1","MW2","MW3"), lty = 1, bty = "n", col = c("black","blue","red"))
      

      要更改轴标签,请参见 xlabylab 中的文本。要更改轴限制,请参阅 xlimylim

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-19
        • 2017-09-16
        • 2020-10-22
        • 2019-10-31
        • 1970-01-01
        • 1970-01-01
        • 2018-12-05
        • 1970-01-01
        相关资源
        最近更新 更多