ggplot2绘制棒棒糖图——Lollipop chart

棒棒糖图,就是长得像棒棒糖一样的图(一句废话),和柱形图,散点图想要表达的意思是一致的,不过展示会更加好看一点,是点图geom_point()和堆叠图geom_segment()的组合,今天这篇文章主要介绍几种常见的棒棒图表现形式,以及一些美化。

0.准备工作

#读取数据
> data<-read.table("data.txt",header = T)
> head(data)
   ID NUM
1 A_1   64
2 A_2   59
3 A_3   53
4 A_4   58
5 A_5   58
#调用R包
> library(tidyverse) #是一个包含了dplyr、ggplot2、tibble等包的集合包

1.基础绘图

> ggplot(data, aes(x=ID, y=NUM)) +
+     geom_segment( aes(x=ID, xend=ID, y=0, yend=NUM)) +
+     geom_point( size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2)
  • size:点的大小
  • color:点外圈的颜色
  • fill:点填充的参数
  • alpha:透明度 [0,1]
  • shape:点的形状
  • stroke:点描边的大小
Fig.1

2.改变线的类型

> ggplot(data, aes(x=ID, y=NUM)) +
+     geom_segment( aes(x=ID, xend=ID, y=0, yend=NUM),linetype="dotdash" ) +
+     geom_point( size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2) 
  • 在geom_segment()中加入linetype改变线的类型。


    Fig.2

3.美化,改变主题

加入theme()函数对fig.1进行进一步优化,去掉背景颜色,增加Y轴标题等。

> ggplot(data, aes(x=ID, y=NUM)) 
+     geom_segment( aes(x=ID, xend=ID, y=0, yend=NUM)) 
+     geom_point( size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2)
+     theme_light() 
+     theme(
+         panel.grid.major.x = element_blank(),
+         panel.border = element_blank(),
+         axis.ticks.x = element_blank()
+     ) 
+     xlab("") 
+     ylab("Value of Y")
Fig.3

4.水平棒棒糖图

有时候我们需要水平的棒棒糖图,来和其他的图形组合,说明一些问题,只需要加入coord_flip()即可:

> ggplot(data, aes(x=ID, y=NUM)) 
+     geom_segment( aes(x=ID, xend=ID, y=0, yend=NUM)) 
+     geom_point( size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2)
+     theme_light() 
+     coord_flip() 
+     theme(
+         panel.grid.major.x = element_blank(),
+         panel.border = element_blank(),
+         axis.ticks.x = element_blank()
+     ) 
+     xlab("") 
+     ylab("Value of Y")
Fig.4

5.调整坐标顺序

以上图中,可以看到R会自动对样本进行排序,在原文件中,样本的排序顺序为A_1- A_100,但在绘图时,会变为A1、A10、A100、A2。此时如果需要制定绘图顺序与文件中的顺序一致,需要在绘图前增加一步:

> data$ID=factor(data$ID,unique(data$ID))

重新绘图:

> ggplot(data, aes(x=ID, y=NUM)) 
+     geom_segment( aes(x=ID, xend=ID, y=0, yend=NUM)) 
+     geom_point( size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2)+theme_light() 
+     coord_flip() 
+     theme(
+         panel.grid.major.x = element_blank(),
+         panel.border = element_blank(),
+         axis.ticks.x = element_blank()
+     ) 
+     xlab("") 
+     ylab("Value of Y")
Fig.5

这里看到Fig.5中的样本数量就与数据文件中一致了。

引用转载请注明出处,如有错误敬请指出。

你可能感兴趣的:(ggplot2绘制棒棒糖图——Lollipop chart)