在R中创建对数刻度上的箱线图
我试图在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
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)