在R中创建条形图

时间:2020-02-23 14:43:47  来源:igfitidea点击:

R中的条形图是基本统计中最常用的图。
这些由水平或者垂直条组成,这些水平或者垂直条代表与数据集中的每个实体关联的特定数量。
例如,出勤天数或者学生人数,没有。
每个模型售出的汽车数量每个政党的票数等等。

R具有一些非常有用的函数来生成和自定义条形图。
为了说明这些,让我们使用R的内置mtcars数据集,该数据集是对11种不同车辆属性中32种不同汽车的观测值的集合。

该数据集采用数据框的形式。
有关数据集的更多信息,请参见此处的R文档页面。
也可以使用?mtcars通过R控制台访问该文档。

R中的基本条形图

让我们看一下mtcars集中的前6个条目。

> head(mtcars)
                 mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

"齿轮"列指示汽车中有多少挡位可用。
让我们分别观察该列。

> mtcars$gear
 [1] 4 4 4 3 3 3 3 4 4 4 4 3 3 3 3 3 3 4 4 4 3 3 3 3 3 4 5 5 5 5 5 4

我们可以在条形图中绘制齿轮的频率(有3、4或者5个齿轮的汽车数量)。
这是通过R中的barplot()函数完成的。

barplot(mtcars$gear)

基本条形图

但是,您可以看到,该条形图并未显示有关数据的任何信息。
它只是为每个条目绘制一个条形图,然后将其留给用户以了解该图。

使用数据频率的条形图

当我们可以表示频率类别中的数据(即,每个类别下有多少个数据条目)时,条形图最有意义。
这确实有助于我们了解有多少辆汽车有3档或者5档,并可以对这些数字进行全面比较。

为此,我们需要绘制" mtcars $gear"的频率而不是整个列。
为此,我们使用table()函数。

> table(mtcars$gear)

 3  4  5 
15 12  5

现在,我们可以轻松地将表格绘制到小图中。

> barplot(table(mtcars$gear))

频率条形图

这看起来比以前的绘图有用得多。
它向我们展示了数据集中最大的汽车数量为3个齿轮,很少有5个齿轮。
现在让我们注释这些图,以使其更加有用。

让我们尝试绘制cyl属性的频率,该频率指示特定汽车有多少个气缸。

> barplot(table(mtcars$cyl))

Barplot Cyl

R中的条形图使用多个变量

也可以根据数据集中的任何其他类别变量将这些条形图拆分为子条形。
首先,两个这样的变量是cyl(指汽车的汽缸)和am(指变速箱)。
让我们尝试使用这些属性拆分条形图–为cyl和am共同创建一个表。
这通常称为堆积条形图。

> barplot(table(mtcars$cyl,mtcars$am))

条形图与类别

美化并添加更多信息

但是,为了使该图更具信息性和美观性,我们需要更改barplot()函数的一些属性。

  • 要为每个am值(0和1)使用单独的条形,请将next属性设置为TRUE。

  • 通过将horiz属性设置为TRUE,可以将条形图从默认的垂直方向更改为水平方向。

  • 标题和轴标签以类似的方式添加到plot()函数。

  • 可以使用names.arg作为向量来指定每个类的名称。

  • 使用col属性添加颜色。

cars <- table(mtcars$am, mtcars$cyl)
barplot(cars,beside=TRUE,main="Car counts by cylinder - auto vs manual",ylab="No.of cars", names.arg=c("4","6","8"),col=c("red","blue"))

在R中的条形图中添加图例

让我们更进一步,并在上述代码中添加图例。
只需将代码行粘贴到上面的代码之后即可。

legend('top',c("Auto","Manual"),pch=15, col=c("red","blue"),title="No. of cars")

pch 15值是指在图例中获得实心的正方形。
我们将在已绘制图形的顶部显示此图例。