如何在R中组合不同的条形图?

-1 r data-visualization

我是新的 R 用户。

我很难弄清楚如何将不同的条形图组合成一个图形。

例如,

假设中国前五名的职业分别是政府雇员、CEO、医生、运动员、艺术家,收入(美元)分别为20,000、17,000、15,000、14,000和13,000,而前五名的职业为在美国,医生、运动员、艺术家、律师、教师的收入(以美元计)分别为 40,000、35,000、30,000、25,000 和 20,000。

我想在一张图中显示差异。

我该怎么做?请注意,它们具有不同的名称。

Din*_*nre 5

这个问题的答案是相当直接的。作为 R 的新用户,我建议您自由使用 'ggplot2' 包。对于很多 R 用户来说,这一包就足够了。

要获得原始帖子中描述的“组合”条形图,答案是将所有数据放入一个数据集中,然后添加分组变量,如下所示:

第 1 步:制作数据集。

data <- read.table(text="
Country,Profession,Income
China,Government employee,20000
China,CEO,17000
China,Doctor,15000
China,Athlete,14000
China,Artist,13000
USA,Doctor,40000
USA,Athlete,35000
USA,Artist,30000
USA,Lawyer,25000
USA,Teacher,20000", header=TRUE, sep=",")
Run Code Online (Sandbox Code Playgroud)

您会注意到我在这里使用了“read.table”函数。在本例中,这不是必需的,纯粹是为了可读性。重要的部分是我们有我们的价值观(收入)和我们的分组变量(国家、职业)。

第 2 步:创建一个条形图,以收入为条形高度,职业为 x 轴,并按国家/地区为条形着色。

library(ggplot2)

ggplot(data, aes(x=Profession, y=Income, fill=Country)) +
    geom_bar(stat="identity", position="dodge") +
    theme(axis.text.x = element_text(angle = 90))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在这里,我们首先加载 'ggplot2' 包。您可能需要安装它。

然后,我们指定要使用的数据以及如何分离它。

ggplot(data, aes(x=Profession, y=Income, fill=Country))
Run Code Online (Sandbox Code Playgroud)

这告诉 'ggplot' 在 'data' 数据框中使用我们的数据集。该aes()命令指定 'ggplot' 应如何读取数据。我们将分组变量 Profession 映射到 x 轴,将 Income 映射到 y 轴,并根据分组变量 Country 更改每个条形的颜色(填充)。

接下来,我们指定我们想要什么样的条形图。

geom_bar(stat="identity", position="dodge")
Run Code Online (Sandbox Code Playgroud)

这告诉 'ggplot' 制作条形图 ( geom_bar())。默认情况下,'geom_bar' 函数尝试制作直方图,但我们已经有了想要使用的总数。我们通过指定 Income 中表示的统计类型是总数或我们想要绘制的实际值(身份)来告诉它使用我们的总数 ( stat="identity")。最后,我做了一个关于如何显示数据的判断,并决定当一个职业有多个收入值时,将一组数据放在另一组数据旁边(position="dodge")。

最后,我们需要旋转 x 轴标签,因为其中一些标签很长。我们使用一个简单的“主题”命令来改变 x 轴文本元素的旋转。

theme(axis.text.x = element_text(angle = 90))
Run Code Online (Sandbox Code Playgroud)

我们将所有这些命令与 链接在一起+,就大功告成了!