ggplot2 – 发散图表
ggplot2 – 发散图表
在前面的章节中,我们了解了可以使用“ggplot2”包创建的各种类型的图表。我们现在将专注于相同的变化,如发散条形图、棒棒糖图表等等。首先,我们将从创建发散条形图开始,下面提到了要遵循的步骤 –
了解数据集
加载所需的包并在 mpg 数据集中创建一个名为“汽车名称”的新列。
#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 函数的帮助下计算归一化数据集。我们还可以使用 avg 上下标志来获取“类型”功能的值。稍后,我们对值进行排序以创建所需的数据集。
收到的输出如下 –
将值转换为因子以保留特定图中的排序顺序,如下所述 –
> # 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()
在这里,图例用绿色和红色的不同颜色表示“高于平均水平”和“低于平均水平”的值。点图传达静态信息。原理与发散条形图中的原理相同,只是仅使用点。