- ggplot2 教程
- ggplot2 - 首页
- ggplot2 - 简介
- ggplot2 - R 的安装
- ggplot2 - R 中的默认绘图
- ggplot2 - 使用坐标轴
- ggplot2 - 使用图例
- ggplot2 - 散点图和抖动图
- ggplot2 - 条形图和直方图
- ggplot2 - 饼图
- ggplot2 - 边缘图
- ggplot2 - 气泡图和计数图
- ggplot2 - 发散型图表
- ggplot2 - 主题
- ggplot2 - 多面板图
- ggplot2 - 多个图
- ggplot2 - 背景颜色
- ggplot2 - 时间序列
- ggplot2 有用资源
- ggplot2 - 快速指南
- ggplot2 - 有用资源
- ggplot2 - 讨论
ggplot2 - 发散型图表
在前面的章节中,我们了解了使用“ggplot2”包可以创建各种类型的图表。现在我们将重点关注相同类型的变体,例如发散条形图、棒棒糖图等等。首先,我们将从创建发散条形图开始,下面列出了要遵循的步骤。
理解数据集
加载所需的包并在 mpg 数据集中创建一个名为“car name”的新列。
#Load ggplot > library(ggplot2) > # create new column for car names > mtcars$`car name` <- rownames(mtcars) > # compute normalized mpg > mtcars$mpg_z <- round((mtcars$mpg - mean(mtcars$mpg))/sd(mtcars$mpg), 2) > # above / below avg flag > mtcars$mpg_type <- ifelse(mtcars$mpg_z < 0, "below", "above") > # sort > mtcars <- mtcars[order(mtcars$mpg_z), ]
上述计算涉及为汽车名称创建新列,并借助 round 函数计算归一化数据集。我们还可以使用 above and below avg 标志来获取“type”功能的值。之后,我们对值进行排序以创建所需的数据集。
收到的输出如下所示:
将值转换为因子以在特定图中保留排序顺序,如下所示:
> # convert to factor to retain sorted order in plot. > mtcars$`car name` <- factor(mtcars$`car name`, levels = mtcars$`car name`)
获得的输出如下所示:
发散条形图
现在,使用作为所需坐标的属性创建一个发散条形图。
> # Diverging Barcharts
> ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) +
+ geom_bar(stat='identity', aes(fill=mpg_type), width=.5) +
+ scale_fill_manual(name="Mileage",
+ labels = c("Above Average", "Below Average"),
+ values = c("above"="#00ba38", "below"="#f8766d")) +
+ labs(subtitle="Normalised mileage from 'mtcars'",
+ title= "Diverging Bars") +
+ coord_flip()
注意 - 发散条形图标记某些维度成员相对于指定值向上或向下指向。
发散条形图的输出如下所示,我们使用函数 geom_bar 创建条形图:
发散棒棒糖图
使用相同的属性和坐标创建一个发散棒棒糖图,只需更改要使用的函数,即 geom_segment(),它有助于创建棒棒糖图。
> ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) + + geom_point(stat='identity', fill="black", size=6) + + geom_segment(aes(y = 0, + x = `car name`, + yend = mpg_z, + xend = `car name`), + color = "black") + + geom_text(color="white", size=2) + + labs(title="Diverging Lollipop Chart", + subtitle="Normalized mileage from 'mtcars': Lollipop") + + ylim(-2.5, 2.5) + + coord_flip()
发散点图
以类似的方式创建发散点图,其中点代表更大维度中散点图中的点。
> ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) +
+ geom_point(stat='identity', aes(col=mpg_type), size=6) +
+ scale_color_manual(name="Mileage",
+ labels = c("Above Average", "Below Average"),
+ values = c("above"="#00ba38", "below"="#f8766d")) +
+ geom_text(color="white", size=2) +
+ labs(title="Diverging Dot Plot",
+ subtitle="Normalized mileage from 'mtcars': Dotplot") +
+ ylim(-2.5, 2.5) +
+ coord_flip()
这里,图例分别代表“高于平均值”和“低于平均值”,颜色分别为绿色和红色。点图传达静态信息。原理与发散条形图相同,只是使用了点。
广告