簡體   English   中英

在R上將設置的列值添加為最小/最大誤差線

[英]Adding set column values as min/max error bars on R

抱歉,是否曾經有人問過這個問題,但是很難找到答案。

我下面有以下數據集。 在R中,我想為AvgReadAvgUniq構造PV1PV2AvgUniq 對於誤差線,我想將MinReadMinUniq設置為最小值,將MaxReadMaxUniq為最大值。

如果您能提供幫助,將不勝感激。 再次道歉,如果以前已經問過這個問題。

         AvgRead  MinRead  MaxRead AvgUniq MinUniq MaxUniq
PV1          20     10        40     40       20     80
PV2          40     20        80     80       40     160

您需要使用dcast()melt()dcast()函數對數據進行一些reshape2

library(reshape2)
library(ggplot2)

df <- data.frame(
  row.names = c("PV1", "PV2"),
  AvgRead = c(20, 40),
  MinRead = c(10, 20),
  MaxRead = c(40, 80),
  AvgUniq = c(40, 80),
  MinUniq = c(20, 40),
  MaxUniq = c(70, 160)
)

df$name <- row.names(df)

df_molten <- melt(df)
df_molten$var1 <- substr(df_molten$variable, 1, 3)
df_molten$var2 <- substr(df_molten$variable, 4, 10000)

df_cast <- dcast(df_molten, name + var2 ~ var1, value.var = "value")

ggplot(data = df_cast, aes(x = name, y = Avg, fill = var2)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_errorbar(
    aes(ymin = Min, ymax = Max),
    width = 0.5,
    size = 1.3,
    position = position_dodge(0.9)
  )

在此處輸入圖片說明

編輯:要更改條形的順序,您需要將var2更改為因子並相應地對級別進行排序:

df_cast <- dcast(df_molten, name + var2 ~ var1, value.var = "value")
df_cast$var2 <- factor(df_cast$var2, levels = c("Uniq", "Read"))

ggplot(data = df_cast, aes(x = name, y = Avg, fill = var2)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_errorbar(
    aes(ymin = Min, ymax = Max),
    width = 0.5,
    size = 1.3,
    position = position_dodge(0.9)
  )

暫無
暫無

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

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