R 更改箱线图轴标签

R 更改箱线图轴标签,r,boxplot,axis-labels,R,Boxplot,Axis Labels,我有一个数据框mdata,其中有一列变量和值,我在R中的方框图上绘制。我在Y轴上绘制log10value,在X轴上绘制变量。我想更改Y轴上的标签,使其显示原始值,而不是log10值 >mdata ID variable value SJ5444_MAXGT coding 17455 SJ5426_MAXGT coding 17961 HR1383_MAXGT coding 17579 HR5522_MAXGT coding 1779

我有一个数据框mdata,其中有一列变量和值,我在R中的方框图上绘制。我在Y轴上绘制log10value,在X轴上绘制变量。我想更改Y轴上的标签,使其显示原始值,而不是log10值

>mdata

   ID          variable value
  SJ5444_MAXGT   coding 17455
  SJ5426_MAXGT   coding 17961
  HR1383_MAXGT   coding 17579
  HR5522_MAXGT   coding 17797
 CH30041_MAXGT   coding 20099
  SJ5438_MAXGT   coding 17467
我希望Y轴范围从minmdata$值到maxmdata$值,间隔为10000。但我不能这样做

以下是我的代码:

boxplot(log10(as.numeric(value))~variable,data=mdata,yaxt="n",border="red",main="Boxplot: Seattle Seq Annotation")

axis(side=2,labels=seq(min(mdata$value),max(mdata$value),10000),cex.axis=0.65,tck=-0.02,at=seq(min(mdata$value),max(mdata$value),by=10000))

我曾试图找出问题所在,但并不明显。任何帮助都将不胜感激。

问题似乎是您的箱线图基于log10值,而您正在绘制的轴使用原始值。有两种方法可以解决这个问题。使用log10生成轴记号,或者在生成箱线图时使用log=y进行坐标变换。以下是一些示例数据的说明:

set.seed(123)
x<-sample(100,1000,T)
var<-sample(letters[1:5],1000,T) 
选择2:

boxplot(x ~ var,yaxt="n",log="y")
axis(side=2,labels=seq(min(x),max(x),len=5),at=seq(min(x),max(x),len=5))
通过适当指定at参数,可以使用任意一种方法获得对数或线性间距的记号,例如,此命令将在使用log=y生成的绘图上放置等距记号:


问题似乎是您的箱线图基于log10的值,而您正在绘制的轴使用原始值。有两种方法可以解决这个问题。使用log10生成轴记号,或者在生成箱线图时使用log=y进行坐标变换。以下是一些示例数据的说明:

set.seed(123)
x<-sample(100,1000,T)
var<-sample(letters[1:5],1000,T) 
选择2:

boxplot(x ~ var,yaxt="n",log="y")
axis(side=2,labels=seq(min(x),max(x),len=5),at=seq(min(x),max(x),len=5))
通过适当指定at参数,可以使用任意一种方法获得对数或线性间距的记号,例如,此命令将在使用log=y生成的绘图上放置等距记号:


尝试此操作需要多个批注,因此请缩短间隔:

axis(side=2,labels=seq(min(mdata$value), max(mdata$value),1000),
         at=log10(seq(min(mdata$value),max(mdata$value),by=1000)))

尝试此操作需要多个批注,因此请缩短间隔:

axis(side=2,labels=seq(min(mdata$value), max(mdata$value),1000),
         at=log10(seq(min(mdata$value),max(mdata$value),by=1000)))

side=2创建Y轴。如果你有任何文本列,我会认为将data.frame转换为matrix是一个非常糟糕的主意。很抱歉,我想创建Y轴,我已经编辑了打字错误。也删除了as.matrix。你忘了将值记录在at=。快速查看的方法就是使用axis2side=2创建Y轴。如果你有任何文本列,我会认为将data.frame转换为matrix是一个非常糟糕的主意。很抱歉,我想创建Y轴,我已经编辑了打字错误。也删除了as.matrix。你忘了将值记录在at=。快速了解这一点的方法就是使用axis2