簡體   English   中英

如何在ggplot2中正確繪制具有數字x值的多個箱線圖?

[英]How to plot multiple boxplots with numeric x values properly in ggplot2?

我試圖在每個數據集大小中使用 3 個不同的工具獲得一個箱線圖,如下所示:

在此處輸入圖片說明

ggplot(data1, aes(x = dataset, y = time, color = tool)) + geom_boxplot() + 
  labs(x = 'Datasets', y = 'Seconds', title = 'Time') + 
  scale_y_log10() +  theme_bw()

但我需要將 x 軸轉換為對數刻度。 為此,我需要對每個數據集進行數字化,以便能夠將它們轉換為對數刻度。 即使沒有轉換它們,它們看起來也像下面這樣:

在此處輸入圖片說明

ggplot(data2, aes(x = dataset, y = time, color = tool)) + geom_boxplot() + 
  labs(x = 'Datasets', y = 'Seconds', title = 'Time') + 
  scale_y_log10() + theme_bw()

我檢查了aes的boxplot參數和分組參數,但無法解決我的問題。 起初,我認為這個問題是由縮放到日志引起的,但是刪除這些元素並沒有解決問題。

我到底錯過了什么? 謝謝...

文件在此鏈接中。 “data2”是“data1”的數字化版本。

你的問題很難回答,但我從中學到了一些新東西!

僅使用group = dataset是不夠的,因為您還需要注意tool變量。 經過一番挖掘,我發現這篇文章使用了interaction()函數。

這是缺少的技巧。 您想使用group是因為您沒有使用x值的因子,但您需要在數據分離中包含tool (因此使用interaction()將計算兩個變量之間可能的交叉)。

# This is for pretty-printing the axis labels
my_labs <- function(x){
  paste0(x/1000, "k")
}
levs <- unique(data2$dataset)

ggplot(data2, aes(x = dataset, y = time, color = tool, 
                  group = interaction(dataset, tool))) + 
  geom_boxplot() + labs(x = 'Datasets', y = 'Seconds', title = 'Time') +
  scale_x_log10(breaks = levs, labels = my_labs) + # define a log scale with your axis ticks
  scale_y_log10() + theme_bw()

這情節

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM