📅  最后修改于: 2023-12-03 15:23:51.516000             🧑  作者: Mango
棒棒糖图(Lollipop chart)是一种可视化方式,可以清晰展示数据的大小排名,并突出重点的数值。在 R 中,我们可以使用 ggplot2 包轻松制作棒棒糖图。
首先,我们需要安装 ggplot2 包。如果您还没有安装 ggplot2 包,可以通过以下代码进行安装:
install.packages("ggplot2")
在本文中,我们使用的示例数据为 mtcars
数据集,它包含了 1974 年美国市场上 32 种不同品牌的汽车的统计数据,包括各项技术指标和毫升每加仑燃料消耗量等信息。我们假设想要展示 mtcars
数据集中前 10 个品牌的加速度数据。
library(ggplot2)
library(dplyr)
data(mtcars)
# 获取前10个品牌的加速度数据
top10 <- mtcars %>%
select(mpg, wt) %>%
top_n(10, mpg)
# 制作棒棒糖图
ggplot(top10, aes(x = reorder(row.names(top10), mpg), y = mpg)) + # x轴按mpg排序
geom_segment(aes(xend = reorder(row.names(top10), mpg), yend = 0), # 绘制棒棒糖杆
size = 1.5) +
geom_point(color = "red", size = 4, # 绘制棒棒糖头
aes(x = reorder(row.names(top10), mpg), y = mpg)) +
labs(title = "Top 10 Cars by MPG") + # 图表标题
xlab("Cars") + ylab("Miles per Gallon") + # x和y轴标签
theme_minimal() # 样式:使用最小主题
代码解读:
mtcars
数据集中的 mpg(每加仑英里数,理解为油耗指标)和 wt(车身重量)两个变量。top_n()
函数选取前 10 个 mpg 最大的品牌数据。ggplot()
函数创建 ggplot 对象,并将 top10
数据集作为 data
参数传入。aes()
函数指定 x 和 y 轴对应的变量。其中,我们使用 reorder()
函数对品牌名称按照 mpg 重新排序,从而将 x 轴上的品牌按照 mpg 从大到小排列。geom_segment()
函数画棒棒糖杆,其中 aes()
函数用于指定 x 轴和 y 轴对应的变量,xend
参数表示棒棒糖杆结束时对应的 x 坐标,yend
参数表示棒棒糖杆结束时对应的 y 坐标,这里设置为 0,即 x 轴。geom_point()
函数在棒棒糖杆顶部画圆点,以形成棒棒糖的形状。其中,我们使用 aes()
函数指定 x 和 y 轴对应的变量,color
参数用于指定圆点颜色,size
参数用于指定圆点大小。labs()
函数设置图表标题。xlab()
函数和 ylab()
函数分别设置 x 轴和 y 轴标签。theme_minimal()
函数设置最小主题样式。注意:不同的数据集和要展示的区间可能需要不同的参数设置,读者可以根据具体情况调整代码。