《R数据可视化手册》——2.3 绘制条形图

    xiaoxiao2024-01-07  154

    本节书摘来异步社区《R数据可视化手册》一书中的第2章,第2.3节,作者:【美】Winston Chang,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    2.3 绘制条形图

    问题如何绘制条形图?

    方法对变量的值绘制条形图(见图2-5左图),可以使用barplot()函数,并向其传递两个向量作为参数,第一个向量用来设定条形的高度,第二个向量用来设定每个条形对应的标签(可选)。

    如果向量中的元素已被命名,则系统会自动使用元素的名字作为条形标签:

    barplot(BOD$demand, names.arg=BOD$Time)``` 有时候,“条形图”表示的是分组数据中各个元素的频数(见图2-5右图)。这种条形图跟直方图有些类似,不过,其用离散取值的x轴替代了直方图中连续取值的x轴。要计算向量中各个类别的频数,可以使用table()函数。

    table(mtcars$cyl)

    4 6 8 11 7 14

    值为4的频数为11,6的为7,8的为14

    <div style="text-align: center"><img src="https://yqfile.alicdn.com/d5fe2422c1094d88db814101c25eb066402eb83a.png" width="" height=""> </div> 只需将上面的表格结果传递给barplot()函数即可绘制频数条形图:

    生成频数表

    barplot(table(mtcars$cyl))

    对于ggplot2系统,可以使用qplot()函数得到类似的绘图结果(见图2-6)。绘制变量值的条形图时需将参数设定为geom="bar"和stat="identity"。注意变量x分别为连续取值和离散取值时输出结果的差异。

    library(ggplot2)qplot(BOD$Time, BOD$demand, geom="bar", stat="identity")

    将x转化为因子型变量,令系统将其视作离散值

    qplot(factor(BOD$Time), BOD$demand, geom="bar", stat="identity")

    <div style="text-align: center"><img src="https://yqfile.alicdn.com/c800f817caf89ccbf7b62545332f944b08f785e4.png" width="" height=""> </div> qplot()函数也可以用来绘制分组变量的频数条形图(见图2-7),事实上,这是ggplot2绘制条形图的默认方式,它比绘制变量值条形图的命令更简短。再提醒一次,注意连续x轴和离散x轴的差异。

    cyl是连续变量

    qplot(mtcars$cyl)

    将cyl转化为因子型变量

    qplot(factor(mtcars$cyl))

    <div style="text-align: center"><img src="https://yqfile.alicdn.com/0e6f9cead58532fdb65a628e8a44469f44af0d22.png" width="" height=""> </div> 如果参数向量包含在同一个数据框内,则可以运行下面的语句:

    变量值条形图,这里用BOD数据框中的Time列

    和demand列分别作为x和y参数

    qplot(Time, demand, data=BOD, geom="bar", stat="identity")

    这与下面的语句等价

    ggplot(BOD, aes(x=Time, y=demand)) + geom_bar(stat="identity")

    频数条形图

    qplot(factor(cyl), data=mtcars)

    这与下面的语句等价

    ggplot(mtcars, aes(x=factor(cyl))) + geom_bar()

    另见 相关资源:敏捷开发V1.0.pptx
    最新回复(0)