首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在填图2中按变量订购桶形图

如何在填图2中按变量订购桶形图
EN

Stack Overflow用户
提问于 2022-11-14 06:20:13
回答 1查看 38关注 0票数 2

所以我在网上找到了一个关于不同国家男性和女性吸烟率的图表,我想按男性吸烟率来排序。

我这里有男性吸烟率+女性吸烟率的订单

代码语言:javascript
复制
countries <- c("China","Russia","Turkey","Greece","Israel","Germany","France",
              "Italy","Canada","United Kingdom","United States","India","Australia",
              "Brazil","Sweden")
women_rate <- c( 1.6,11.3,14.4, 17.9,12.6,18.6,15.4,12.7,12.3,12.5,12.7,1.7,10.4,7.3,6.8)

men_rate <- c(44.4,43.9,40.6,29.9,27.3,25.4,20.5,20.5,17.3,15.9,15.3,15.2,12.8,12.7,5.9)

country <- rep(countries, 2)
rate <- c(men_rate,women_rate)
gender <- c(rep("men",length(men_rate)),rep("women",length(women_rate)))

smoking_data <- data.frame(country,rate,gender)


library(tidyverse)
library(ggthemes)




ggplot(smoking_data, aes(x=rate,
                         y=reorder(country,rate),fill=gender)) +
  geom_bar(position='dodge', stat='identity')

它给出了这个结果图。

我想按男人的吸烟率来定,比如中国,俄罗斯,土耳其,希腊等等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-14 07:29:59

默认情况下,reorder将按所有obs的平均值进行排序。每一组,即在你的情况下,每个国家的男女平均数。

一个解决方法是使用一个“助手列”,其中妇女的值被NA替换,以便在重新排序时只考虑到男性的值。例如,这可以通过使用reorder(country, ifelse(gender == "men", rate, NA), na.rm = TRUE)来实现。

代码语言:javascript
复制
library(ggplot2)

ggplot(smoking_data, aes(
  x = rate,
  y = reorder(country, ifelse(gender == "men", rate, NA), na.rm = TRUE), fill = gender
)) +
  geom_bar(position = "dodge", stat = "identity")

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74427619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档