数据集:
Header| Header| Header
Month A B
Jan 2173.248 5433.12
Feb 2418.8252 5726.5076
Mar 2692.1532 6035.7396
Apr 2996.3648 6361.6696
May 3334.9558 6705.1996
Jun 3711.8048 7067.28
Jul 4131.2392 7448.914
Aug 4598.0682 7851.1554
Sep 5117.651 8275.1174
Oct 5695.9452 8721.9748
Nov 6339.586 9192.9618
Dec 7055.9588 9689.3808
u=dataset %>% gather(var, val, A:B)
ggplot(data=u,aes(x = Month, y = val, fill = var)) + geom_bar(stat = 'identity', position = 'dodge')
我得到的情节,但x轴上的月份按字母顺序排列。我希望它按升序重新排列(即1月,2月,3月)。
答案 0 :(得分:0)
假设你有类似的东西:
dataset <- data.frame(Month = as.factor(c('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun')),
A = c(1, 2, 3, 4, 5, 6),
B = c(22, 33, 44, 55, 66, 77))
u <- dataset %>% tidyr::gather(var, val, A:B)
您可以通过明确设置顺序(尊重数据框中的顺序)来更改因子级别的顺序:
u$Month <- factor(u$Month, levels = u$Month[order(u$val)])
ggplot(data=u,aes(x = Month, y = val, fill = var)) + geom_bar(stat = 'identity', position = 'dodge')
答案 1 :(得分:0)
您可以直接在ggplot中手动定义订单:
ggplot(u, aes(x = Month, y = val, fill = var)) +
geom_bar(stat = 'identity', position = 'dodge') +
scale_x_discrete(labels = dataset$Month)