2017-03-20 15 views
1

に変更します。vioplotのx軸の値を変更しようとしています。私は提案を使用して書いた:バイオリンプロットのx軸をR

library(vioplot) 
labels=c(10,20,30) 
x1=c(1,2,3,4) 
x2=c(5,6,7,8,9,10) 
x3=c(11,12,13,14,15,16) 
x=list(x1,x2,x3) 
do.call(what = vioplot, args = x) 
axis(side=1,at=1:length(labels),labels=labels) 

をしかし、a軸の値は、私が提示されないようにする1-2-3に追加されているようです。

は、それがデータフレームに変換する必要があるので、あなたは

+0

はい。私はバイオリンの値のリストを渡すことができ、それぞれのレベルを別々に指定することはできません。 – user552231

答えて

1

あなたは、リスト内の()形式のデータを持って感謝します。次に、値を積み重ねてデータフレームを溶かします。

geom_violinを使用して、カーネル密度プロットを作成し、geom_boxplotを使用して、カーネル密度プロットの上にボックスプロットを作成します。ボックスプロットの幅はwidthを使用して制御されます。 FALSE

library('ggplot2') 
library('reshape2') 
df <- data.frame(lapply(x, function(y) {length(y) <- max(lengths(x)); y})) # create data frame from list of x 
colnames(df) <- as.character(labels) # change column names to labels 
df <- melt(df)      # melt data frame 
df <- df[ !is.na(df$value), ]   # remove NA 
ggplot(data = df) + 
    geom_violin(aes(x = variable, y = value, fill = variable)) + # kernel density plot 
    geom_boxplot(aes(x = variable, y = value), width = 0.1) + # box plot 
    xlab(" labels ") + # x axis title 
    ylab(" values ")  # y axis title 

enter image description here

トリム=

ggplot(data = df) + 
    geom_violin(aes(x = variable, y = value, fill = variable), trim = FALSE) + # kernel density plot 
    geom_boxplot(aes(x = variable, y = value), width = 0.1) + # box plot 
    xlab(" labels ") + # x axis title 
    ylab(" values ")  # y axis title 

enter image description here

データ:

labels=c(10,20,30) 
x1=c(1,2,3,4) 
x2=c(5,6,7,8,9,10) 
x3=c(11,12,13,14,15,16) 
x=list(x1,x2,x3) 
関連する問題