我是新用户。
我很难弄清楚如何将不同的条形图组合成一个图形。
例如,
假设,中国职业前五名分别是政府雇员,首席执行官,医生,运动员,艺术家,收入(以美元计)分别为20,000,17,000,15,000,14,000和13,000,而前五名在美国的职业,医生,运动员,艺术家,律师,教师的收入(美元)分别为40,000,35,000,30,000,25,000和20,000。
我想在一张图中显示差异。
我该怎么做?请注意他们有不同的名字。
答案 0 :(得分:3)
问题的答案非常简单。作为一个新的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=",")
你会注意到我在这里使用'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))
这里我们首先加载'ggplot2'包。您可能需要安装它。
然后,我们指定要使用的数据以及如何分隔它。
ggplot(data, aes(x=Profession, y=Income, fill=Country))
这告诉'ggplot'在'data'数据框中使用我们的数据集。 aes()
命令指定'ggplot'应如何读取数据。我们将分组变量Income映射到x轴,将Income映射到y轴,并根据分组变量Country更改每个柱的颜色(填充)。
接下来,我们指定我们想要的条形图。
geom_bar(stat="identity", position="dodge")
这告诉'ggplot'制作一个条形图(geom_bar()
)。默认情况下,'geom_bar'函数会尝试制作直方图,但我们已经有了我们想要使用的总数。我们通过指定收入中表示的统计类型是我们想要绘制的总计或实际值(标识)(stat="identity"
)来告诉它使用我们的总计。最后,我做了一个关于如何显示数据的判断调用,并决定当一个职业有多个收入值(position="dodge"
)时,将一组数据设置在另一个数据旁边。
最后,我们需要旋转x轴标签,因为它们中的一些非常长。我们使用一个简单的'theme'命令来改变x轴文本元素的旋转。
theme(axis.text.x = element_text(angle = 90))
我们将所有这些命令与+
连在一起,就完成了!