在R中创建对数刻度上的箱线图

在R中创建对数刻度上的箱线图,r,R,我试图在R中绘制一个方框图,其中输入文件有多列,每列有不同的行数。在以下链接的帮助中提供帮助: 我正在努力: x <- read.csv( 'filename.csv', header = T ) plot( 1, 1, xlim=c(1,ncol(x)), ylim=range(x[-1,], na.rm=TRUE), xaxt='n', xlab='', ylab='' ) axis(1, labels

我试图在R中绘制一个方框图,其中输入文件有多列,每列有不同的行数。在以下链接的帮助中提供帮助:

我正在努力:

x <- read.csv( 'filename.csv', header = T )
     plot(
       1, 1,
       xlim=c(1,ncol(x)), ylim=range(x[-1,], na.rm=TRUE), 
       xaxt='n', xlab='', ylab=''
       )
       axis(1, labels=colnames(x), at=1:ncol(x))

       for(i in 1:ncol(x)) {
       p <- x[,i]
       boxplot(p, add=T, at=i)
}
您的数据是一个可复制的示例 注意,我必须删除一个额外的元素

library(data.table)
df <- fread("A,B,C,D
    2345.42,932.19,40.8,26.19
    138.48,1074.1,4405.62,4077.16
    849.35,0.0,1451.66,1637.39
    451.38,146.22,4579.6,5133.14
    5749.01,7250.08,12.23,0.09
    4125.48,129.46,49.51,440.38", sep=",", header=T)
多一点 对于log10刻度,我喜欢将
1
添加到我的值中以消除负值,因为
log10(0
。这会将绘图上的最小值设置为
0
,因为
0+1=1
log10(1)=0

您的数据是一个可复制的示例 注意,我必须删除一个额外的元素

library(data.table)
df <- fread("A,B,C,D
    2345.42,932.19,40.8,26.19
    138.48,1074.1,4405.62,4077.16
    849.35,0.0,1451.66,1637.39
    451.38,146.22,4579.6,5133.14
    5749.01,7250.08,12.23,0.09
    4125.48,129.46,49.51,440.38", sep=",", header=T)
多一点
对于log10刻度,我喜欢将
1
添加到我的值中以消除负值,因为
log10(0
。这就把你的图的最小值设置为<代码> 0 < /代码>,因为<代码> 0 + 1=1 < /代码>和<代码> Log10 >(1)=0 < /代码>

请提供一些数据。嗨,Roli,如果我的答案有助于考虑接受它(在答案左边勾选标记)。这让社区知道答案是有效的,它解决了你的问题。请提供一些数据。嗨,Roli。如果我的答案有助于考虑接受它(在答案的左边检查标记)。这让社区知道答案是有效的,它解决了你的问题。
library(dplyr)
library(tidyr)
df1 <- df %>% 
         replace(.==0,NA) %>%               # make 0 into NA
         gather(var,values,A:D) %>%         # convert from wide (4-col) to long (2-col) format
         mutate(values = log10(values))     # log10 transform
boxplot(values ~ var, df1)