是否可以通過它們的下限值和上限值之間的距離對 R 中的線圖進行排序,并將它們從最大距離到最小距離排序?
代碼:
df <- ToothGrowth
df$dose <- as.factor(df$dose)
head(df, 3)
library(dplyr)
df.summary <- df %>%
group_by(dose) %>%
summarise(
lower = min(len), upper = max(len), p = mean(len),
)
f <- ggplot(
df.summary,
aes(x = dose, y = p, ymin = lower, ymax = upper)
)
f geom_linerange()
目標是讓它們從最大距離到最小距離(從左到右)排列。

任何幫助將不勝感激!
uj5u.com熱心網友回復:
您可以使用reorder()
ggplot(
df.summary,
aes(x = reorder(dose, -(upper-lower)), y = p, ymin = lower, ymax = upper))
geom_linerange()
labs(x="Dose")

uj5u.com熱心網友回復:
如您所見,有很多方法可以解決這個問題。在以下情況下,我計算差異并根據結果對 data.frame 進行排序。最后一行設定因子水平。這是我的首選方式,因為我保留我的 ggplots 僅用于繪圖,并盡可能避免進行任何資料操作。
xy.summary$diff <- with(xy.summary, upper - lower)
xy.summary <- xy.summary[order(xy.summary$diff, decreasing = TRUE), ]
levels(xy.summary$dose) <- xy.summary$dose
ggplot(xy.summary, mapping = aes(x = dose, y = p, ymin = lower, ymax = upper))
theme_bw()
geom_linerange()

uj5u.com熱心網友回復:
這應該作業
df <- ToothGrowth
df$dose <- as.factor(df$dose)
head(df, 3)
library(dplyr)
df.summary <- df %>%
group_by(dose) %>%
summarise(
lower = min(len), upper = max(len), p = mean(len),
)
f <- ggplot(
df.summary,
aes(x = reorder(dose,upper-lower), y = p, ymin = lower, ymax = upper)
)
f geom_linerange()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471569.html
上一篇:從基本R圖轉換為ggplot
