我正在 ggplot 中繪制圖表。一切都很好,但現在我對傳說有疑問。我想重新排列傳說。我現在得到的傳說是
0-63
100-200
200-400
63-100
我想要的是。我想將最后一個值移動到第二個位置。應該是這樣的
0-63
63-100
100-200
200-400
我的代碼在下面
我的資料看起來像這樣,但最多 1000 行
time less63 63_100 100_200 200_400
06:01 0 4 3 1
06:02 2 6 6 5
06:03 4 8 8 6
06:04 6 9 7 8
06:05 7 10 8 7
06:06 3 11 3 7
06:07 6 7 2 2
06:08 7 3 0 3
ggplot(df)
geom_area(aes(x=time,y=less63,fill="0-63"),alpha=0.5)
geom_area(aes(x=time,y=63_100,fill="63-100"),alpha=0.5)
geom_area(aes(x=time,y=100_200,fill="100-200"),alpha=0.5)
geom_area(aes(x=time,y=200_400,fill="200-400"),alpha=0.5)
scale_colour_manual(name="Legend", values = c("0-63" = "red","63-100" = "green","100-200" = "black","200-400" = "blue"))
在這方面我將非常感謝
uj5u.com熱心網友回復:
您在這里要做的第一件事就是將您的資料轉換為
更新:重疊圖
OP 表示他們正在創建重疊圖。默認情況下,映射到填充的圖層的位置geom_are()設定為“堆疊”,這意味著 y 值彼此堆疊。這樣可以輕松查看和查看區域在 x 軸上的變化方式。但是,OP 想要準備一個圖,其中 y 值是……值。這將是position="identity"并創建重疊區域。你可以在這里看到直接的效果:
ggplot(df, aes(x=time, y=val, fill=ranges))
geom_area(alpha=0.2, position="identity")
scale_x_time(labels = scales::time_format(format = "%M:%S"))
scale_fill_manual(name="Legend", values = c("0-63" = "red","63-100" = "green","100-200" = "black","200-400" = "blue"))

您可以看到,即使降低alpha=價值,也很難辨別發生了什么。如果您想更清楚地查看此資訊,我建議您使用水平放置的刻面作為更好的查看選項:
ggplot(df, aes(x=time, y=val, fill=ranges))
geom_area(alpha=0.2, position="identity")
scale_x_time(labels = scales::time_format(format = "%M:%S"))
scale_fill_manual(name="Legend", values = c("0-63" = "red","63-100" = "green","100-200" = "black","200-400" = "blue"))
facet_grid(ranges ~ .)

uj5u.com熱心網友回復:
我建議在您的資料上使用 tidyr::pivot_longer() ,使其看起來像這樣。
時間變數值 1 06:01 less63 0 2 06:01 63_100 4
等等...
然后使用 ordered() 將“變數”設定為有序因子。然后使用 geom_area(aes(x = time, y = variable, full = variable)
uj5u.com熱心網友回復:
- 以長格式提供您的資料
pivot_longer - 轉換
name為因子(水平并標記它) - 在 ggplot 中使用
fill和group
自定義操作:
library(ggplot2)
library(dplyr)
library(tidyr)
df %>%
pivot_longer(
-time
) %>%
mutate(name = factor(name, levels = c("less63", "X63_100", "X100_200", "X200_400"),
labels = c("0-63","63-100","100-200","200-400"))) %>%
ggplot(aes(x=factor(time), y=value, fill=name, group=name))
geom_area(position = "identity", alpha=0.5)
scale_fill_manual(name="Legend", values = c("0-63" = "red","63-100" = "green","100-200" = "black","200-400" = "blue"))
一般的做法:
library(ggplot2)
library(dplyr)
library(tidyr)
df %>%
pivot_longer(
-time
) %>%
mutate(name = factor(name, levels = c("less63", "X63_100", "X100_200", "X200_400"))) %>%
ggplot(aes(x=time, y=value, fill=name, group=name))
geom_area()

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/419362.html
標籤:
上一篇:Dplyr變異語法
