R 如何对图表和图例中的条形图重新排序
我正努力按照数据结构(SD、MB、FI、FO、NP)对绘图和图例中的条形图重新排序。 这是我的数据R 如何对图表和图例中的条形图重新排序,r,R,我正努力按照数据结构(SD、MB、FI、FO、NP)对绘图和图例中的条形图重新排序。 这是我的数据 Data <- tibble::tribble( ~Year, ~SD, ~MB, ~FI, ~FO, ~NP, "2010", 41, 36.7, 10.2, 5.3, 6.8, "2011", 49.1, 50.9, NA,
Data <- tibble::tribble(
~Year, ~SD, ~MB, ~FI, ~FO, ~NP,
"2010", 41, 36.7, 10.2, 5.3, 6.8,
"2011", 49.1, 50.9, NA, NA, NA,
"2012", 41.1, 32.4, 11.4, 8.6, 6.4,
"2013", 38.9, 29.6, 10, 13.7, 7.7,
"2014", 38.8, 36.5, 5.2, 10.4, 9,
"2015", 43.4, 39.1, NA, 11.9, 5.5,
"2016", 40.6, 38, 10.5, 8.8, 2.2,
"2017", 38.3, 42.3, 9.7, 6.8, 2.9,
"2018", 37.8, 40.3, 9.3, 10.6, 2,
"2019", 33.8, 41.6, 8.1, 14.2, 2.3
先谢谢你
下面是对代码的编辑:
csv文件位于此处:
Rtutorial%
突变(名称=因子(名称,级别=c('Total'),
“黑貂羚羊”,
“猴子”,
“青蛙和芦苇巴克”,
“狐狸和豺狼”,
“侧条纹豺狼”
))) %>%
ggplot(aes(x=as.factor(Year),y=value,fill=name,reorder(TRUE)))+
连续缩放(标签=缩放::逗号格式())+
ylab(“总人口”)+
xlab(“年度”)+
实验室(fill=“Legend”)+
几何图形栏(stat=“identity”,position=“dodge”)+
主题(经典)+
主题(strip.placement=“外部”,
panel.grid.major=元素_blank(),
panel.grid.minor=元素_blank(),
panel.border=元素_blank(),
legend.position=“right”,
axis.text.x=元素\文本(角度=0,vjust=0))+
比例尺(调色板=“绿色”,名称=“图例”,标签=c('Total
种群','貂羚羊','猴子','青蛙和苇鹿','狐狸和羚羊'
豺狼',“侧条纹豺狼”,订购(T))+
主题(legend.position=“right”,axis.text.x=元素\文本(角度=
90,vjust=0.4)
我在运行代码时仍然会出错,我尝试查看了几个有关stackoverflow的示例,但看不出问题出在哪里
我得到的一个错误是factor-name中的错误。如果你把这一行放进去:
mutate(name = factor(name, levels=c("SD","MB","FI","FO","NP"))) %>%
在您的pivot\u(一年)
功能之后,它应该可以工作。这将使变量name
成为一个按您所需的级别排序的因子
Data %>%
pivot_longer(-Year) %>%
mutate(name = factor(name, levels=c("SD","MB","FI","FO","NP"))) %>%
ggplot(aes(x = Year, y = value, fill = name, reorder(TRUE))) + ylab("Students") +
xlab("Year") +
geom_bar(stat = "identity", position = "dodge") +
facet_wrap(~ Year, scales = 'free_x', ncol = 10, strip.position = "bottom") +
theme_minimal() +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank()+
theme(strip.placement = "outside",
panel.spacing = unit(0, "points"),
axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
strip.background = element_blank(),
strip.background.y = element_blank(),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
strip.text = element_text(face = "bold", size = 9)) +
scale_fill_continuous(name = "Legend", label = c("SD","MB","FI","FO","NP", ordered(TRUE))) +
theme(legend.position = "right", axis.text.x = element_text(angle = 90,vjust = 0.4)))
编辑-回答下面的评论 您可以稍微简化该函数,如下所示:
Data <- tibble::tribble(
~Year, ~`Sable-Antelope`, ~`Monkey`, ~`Frogs and reed buck`, ~`Fox and jackals`, ~`Side striped jackal`,
"2010", 41, 36.7, 10.2, 5.3, 6.8,
"2011", 49.1, 50.9, NA, NA, NA,
"2012", 41.1, 32.4, 11.4, 8.6, 6.4,
"2013", 38.9, 29.6, 10, 13.7, 7.7,
"2014", 38.8, 36.5, 5.2, 10.4, 9,
"2015", 43.4, 39.1, NA, 11.9, 5.5,
"2016", 40.6, 38, 10.5, 8.8, 2.2,
"2017", 38.3, 42.3, 9.7, 6.8, 2.9,
"2018", 37.8, 40.3, 9.3, 10.6, 2,
"2019", 33.8, 41.6, 8.1, 14.2, 2.3)
Data %>%
pivot_longer(-Year) %>%
mutate(name = factor(name, levels=c("Sable-Antelope",
"Monkey",
"Frogs and reed buck",
"Fox and jackals",
"Side striped jackal"))) %>%
ggplot(aes(x = Year, y = value, fill = name)) +
ylab("Students") +
xlab("Year") +
labs(fill="Legend") +
geom_bar(stat = "identity", position = "dodge") +
scale_fill_brewer(palette="Greens") +
theme_minimal() +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank() ,
legend.position = "right",
axis.text.x = element_text(angle = 0, vjust = 7.5))```
这很有帮助,谢谢@DaveArmstrong。但是,如何将颜色更改为绿色,并将图例标记为图例而不是名称?效果很好,但当我将列标题更改为数据(即名称)时会出错。我想将列标题从~SD、~MB、~FI、~FO、~NP更改为~Sable羚羊、~Monkey、~Frogs和reed buck,~z~狐狸和豺狼,~侧面条纹jackal@MisBlearnsR-再次编辑以使用所需的变量名称。诀窍在于,对于包含空格或其他特殊字符的名称,您需要将它们括在后面的记号中-
`
。但是,当我运行以csv格式保存的导入数据时,我很难获得正确的绘图。
Data %>%
pivot_longer(-Year) %>%
mutate(name = factor(name, levels=c("SD","MB","FI","FO","NP"))) %>%
ggplot(aes(x = Year, y = value, fill = name, reorder(TRUE))) + ylab("Students") +
xlab("Year") +
geom_bar(stat = "identity", position = "dodge") +
facet_wrap(~ Year, scales = 'free_x', ncol = 10, strip.position = "bottom") +
theme_minimal() +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank()+
theme(strip.placement = "outside",
panel.spacing = unit(0, "points"),
axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
strip.background = element_blank(),
strip.background.y = element_blank(),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
strip.text = element_text(face = "bold", size = 9)) +
scale_fill_continuous(name = "Legend", label = c("SD","MB","FI","FO","NP", ordered(TRUE))) +
theme(legend.position = "right", axis.text.x = element_text(angle = 90,vjust = 0.4)))
Data <- tibble::tribble(
~Year, ~`Sable-Antelope`, ~`Monkey`, ~`Frogs and reed buck`, ~`Fox and jackals`, ~`Side striped jackal`,
"2010", 41, 36.7, 10.2, 5.3, 6.8,
"2011", 49.1, 50.9, NA, NA, NA,
"2012", 41.1, 32.4, 11.4, 8.6, 6.4,
"2013", 38.9, 29.6, 10, 13.7, 7.7,
"2014", 38.8, 36.5, 5.2, 10.4, 9,
"2015", 43.4, 39.1, NA, 11.9, 5.5,
"2016", 40.6, 38, 10.5, 8.8, 2.2,
"2017", 38.3, 42.3, 9.7, 6.8, 2.9,
"2018", 37.8, 40.3, 9.3, 10.6, 2,
"2019", 33.8, 41.6, 8.1, 14.2, 2.3)
Data %>%
pivot_longer(-Year) %>%
mutate(name = factor(name, levels=c("Sable-Antelope",
"Monkey",
"Frogs and reed buck",
"Fox and jackals",
"Side striped jackal"))) %>%
ggplot(aes(x = Year, y = value, fill = name)) +
ylab("Students") +
xlab("Year") +
labs(fill="Legend") +
geom_bar(stat = "identity", position = "dodge") +
scale_fill_brewer(palette="Greens") +
theme_minimal() +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank() ,
legend.position = "right",
axis.text.x = element_text(angle = 0, vjust = 7.5))```
Rtutorial %>%
pivot_longer(c(-Year)) %>%
mutate(name = factor(name, levels=c('Total',
'Sable.Antelope',
'Monkey',
'Frogs.and.reed.buck',
'Fox.and.jackals',
'Side.striped.jackal'),
labels=c('Total',
'Sable-Antelope',
'Monkey',
'Frogs and reed buck',
'Fox and jackals',
'Side striped jackal'))) %>%
ggplot(aes(x=as.factor(Year), y=value, fill=name, reorder(TRUE))) +
scale_y_continuous(labels = scales::comma_format()) +
ylab("Total Population") +
xlab("Year") +
labs(fill="Legend") +
geom_bar(stat = "identity", position = "dodge") +
theme_classic() +
theme(strip.placement = "outside",
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank() ,
legend.position = "right",
axis.text.x = element_text(angle = 90,vjust = 0.4)) +
scale_fill_brewer(palette = "Greens", name = "Legend")