条形图位置上的ggplot标签
ggplot labels on bargraph position
如果这是一个重复的问题,我真的很抱歉。但出于某种原因,之前给出的答案对我不起作用。
我有以下 df:
Country<-c("Chile", "Chile", "Finland","Finland")
Taxa<-c("Mammalia","Amphibia","Mammalia","Amphibia")
Loss<-c(0.15, 1, 0.2, 0.75)
df<-data.frame(Country, Taxa, Loss)
我想显示为排名并添加标签。这是我得到的:
ggplot(df,aes(x=reorder(Country, Loss), y=Loss)) +
geom_bar(aes(fill = Taxa), position="dodge", stat="identity") +
labs(x = "", y = "")+
ylim(0,1)+
theme (legend.position="top", legend.title = element_blank(),legend.text = element_text(size = 17),
axis.text.x = element_text(size=17),
axis.text.y = element_text(size=17), axis.title.y=element_text(size=17))+
geom_text(aes(label = Loss), position=position_dodge(width=1))+
coord_flip()
效果很好!只是我不能像我想要的那样放置标签。我希望标签位于栏的旁边。我尝试使用 width
以及一些 vjust
和 hjust
但位置从未改变......我做错了什么?
提前致谢!!!
想法取自?geom_text
:
ggplot(df, aes(x=reorder(Country, Loss), y=Loss, label = Loss, fill = Taxa)) +
geom_bar(position="dodge", stat="identity") +
geom_text(aes(y = Loss + 0.02), position = position_dodge(0.9), vjust = 0) +
coord_flip()
另一个使用 vjust
和 hjust
的解决方案,正如您提到的。
How to use vjust
and hjust
我想你想要每个柱子一个标签,在 geom_text(aes())
中使用 group = Taxa
。
ggplot(df,aes(x=reorder(Country, Loss), y=Loss)) +
geom_bar(aes(fill = Taxa), position="dodge", stat="identity") +
labs(x = "", y = "")+ ylim(0,1)+ theme (legend.position="top",
legend.title = element_blank(),legend.text = element_text(size = 17),
axis.text.x = element_text(size=17), axis.text.y = element_text(size=17),
axis.title.y=element_text(size=17))+
geom_text(aes(x = reorder(Country, Loss), label = Loss, group = Taxa),
position=position_dodge(width=1), hjust = -1)
+ coord_flip()
如果这是一个重复的问题,我真的很抱歉。但出于某种原因,之前给出的答案对我不起作用。 我有以下 df:
Country<-c("Chile", "Chile", "Finland","Finland")
Taxa<-c("Mammalia","Amphibia","Mammalia","Amphibia")
Loss<-c(0.15, 1, 0.2, 0.75)
df<-data.frame(Country, Taxa, Loss)
我想显示为排名并添加标签。这是我得到的:
ggplot(df,aes(x=reorder(Country, Loss), y=Loss)) +
geom_bar(aes(fill = Taxa), position="dodge", stat="identity") +
labs(x = "", y = "")+
ylim(0,1)+
theme (legend.position="top", legend.title = element_blank(),legend.text = element_text(size = 17),
axis.text.x = element_text(size=17),
axis.text.y = element_text(size=17), axis.title.y=element_text(size=17))+
geom_text(aes(label = Loss), position=position_dodge(width=1))+
coord_flip()
效果很好!只是我不能像我想要的那样放置标签。我希望标签位于栏的旁边。我尝试使用 width
以及一些 vjust
和 hjust
但位置从未改变......我做错了什么?
提前致谢!!!
想法取自?geom_text
:
ggplot(df, aes(x=reorder(Country, Loss), y=Loss, label = Loss, fill = Taxa)) +
geom_bar(position="dodge", stat="identity") +
geom_text(aes(y = Loss + 0.02), position = position_dodge(0.9), vjust = 0) +
coord_flip()
另一个使用 vjust
和 hjust
的解决方案,正如您提到的。
How to use vjust
and hjust
我想你想要每个柱子一个标签,在 geom_text(aes())
中使用 group = Taxa
。
ggplot(df,aes(x=reorder(Country, Loss), y=Loss)) +
geom_bar(aes(fill = Taxa), position="dodge", stat="identity") +
labs(x = "", y = "")+ ylim(0,1)+ theme (legend.position="top",
legend.title = element_blank(),legend.text = element_text(size = 17),
axis.text.x = element_text(size=17), axis.text.y = element_text(size=17),
axis.title.y=element_text(size=17))+
geom_text(aes(x = reorder(Country, Loss), label = Loss, group = Taxa),
position=position_dodge(width=1), hjust = -1)
+ coord_flip()