scale_x_reordered 不适用于 facet_grid
scale_x_reordered does not work in facet_grid
我是 R 的新手,想就使用 reorder_within 和 scale_x_reordered(库:tidytext)的可视化寻求您的建议。
我想按州显示每年的数据(按最大值到最小值排序)。这是用于说明目的的示例数据。
test <- data.frame(stateabb = rep(state.abb, each = 5, times = 1),
year = seq(2001,2005,1),
value = sample(1:100, 250, replace = TRUE))
我使用以下代码成功创建了按州和年份的简单图表。
ggplot(test, aes(x = stateabb, y = value)) +
geom_bar(stat = "identity") +
facet_grid(year ~ ., scales = "free_x")
看这张图表,很难看出每年哪个州最好。因此,我决定每年使用 reorder_within.
对值进行排序
ggplot(test, aes(x = reorder_within(stateabb, -value, year), y = value)) +
geom_bar(stat = "identity") +
facet_grid(year ~ ., scales = "free_x") +
scale_x_reordered()
但是,我无法像在第一张图片中那样显示它。我以为 scale_x_reordered 可以解决,结果并没有达到我的预期。我也明白我需要自由设置 x 轴以显示每年的州顺序。但这样做并没有让我到任何地方。我在这里做错了什么?有没有其他合适的方式来按年显示这些州的顺序?任何正确显示此图表的建议或建议将不胜感激。提前非常感谢!
这行不通,因为 facet_grid
只会共享一个 x-axis。但是每个方面的顺序都不同。你想要facet_wrap
。例如像这样:
library(ggplot); library(tidytext)
ggplot(test, aes(x = reorder_within(stateabb, -value, year), y = value)) +
geom_bar(stat = "identity") + scale_x_reordered() +
facet_wrap(year ~ ., ncol = 1, scales = "free_x", strip.position = "right")
我是 R 的新手,想就使用 reorder_within 和 scale_x_reordered(库:tidytext)的可视化寻求您的建议。
我想按州显示每年的数据(按最大值到最小值排序)。这是用于说明目的的示例数据。
test <- data.frame(stateabb = rep(state.abb, each = 5, times = 1),
year = seq(2001,2005,1),
value = sample(1:100, 250, replace = TRUE))
我使用以下代码成功创建了按州和年份的简单图表。
ggplot(test, aes(x = stateabb, y = value)) +
geom_bar(stat = "identity") +
facet_grid(year ~ ., scales = "free_x")
看这张图表,很难看出每年哪个州最好。因此,我决定每年使用 reorder_within.
对值进行排序ggplot(test, aes(x = reorder_within(stateabb, -value, year), y = value)) +
geom_bar(stat = "identity") +
facet_grid(year ~ ., scales = "free_x") +
scale_x_reordered()
这行不通,因为 facet_grid
只会共享一个 x-axis。但是每个方面的顺序都不同。你想要facet_wrap
。例如像这样:
library(ggplot); library(tidytext)
ggplot(test, aes(x = reorder_within(stateabb, -value, year), y = value)) +
geom_bar(stat = "identity") + scale_x_reordered() +
facet_wrap(year ~ ., ncol = 1, scales = "free_x", strip.position = "right")