R语言ggplot2条形图详解

来源:互联网 发布:cetv4 网络回看 编辑:程序博客网 时间:2024/06/05 10:00

本文内容来自个人做案例过程中遇到的一些问题,一是用普通的barplot(),所画条形图的条数太多,导致x轴的标签不能完全显示;二是用EXCEL可以解决一,但是画的条形图又不是太美观。因此,本文顺着这个方向,得到了一些启示,并对此作出总结。


  • 总体参数
  • 背景色设置
  • x轴标签字体旋转一定的角度
  • 设置坐标轴取值范围
  • 添加数据
  • 图例设置
  • 保存图
  • 保存中中文乱码解决

总体参数

可参见官网:http://matplotlib.org/api/pyplot_api.html

matplotlib.pyplot.pie(x, explode=None, labels=None,                       colors=None, autopct=None,                      pctdistance=0.6, shadow=False,                      labeldistance=1.1, starangle=None,                      radius=None, counterclock=True,                      center=(0,0), frame=False,                       hold=None, data=None)

以下介绍参数含义及具体设置。

背景色设置

用ggplot画图时,默认的是带背景色,有时在做报告之类时,想要去掉背景色,可以通过panel.background=element_rect()设置为透明色即可。

p <- read.csv("diqu.csv")library(ggplot2)pl <- ggplot(data=p, aes(x=diqu, y=Freq,fill=diqu), fill=diqu) +      geom_bar(stat="identity")pl

#背景色设为透明,边框为灰色pl + theme(panel.background=element_rect(fill='transparent',color ="gray")) 

虽然x轴标全部显示,但文在都连在了一起,下面将x轴标签字体旋转一定的角度。

x轴标签字体旋转一定的角度

#设定x轴坐标标签的文字方向,大小,颜色pl + theme(panel.background=element_rect(fill='transparent',                                         color ="gray"),            axis.text.x = element_text(angle = 70, hjust = 0.5,                               vjust = 0.5,color = "black",size=9))

看到上图武汉市明显比其他地区高出很多,下面对此进行设置。

设置坐标轴取值范围

#设置y轴取值范围pl + theme(panel.background=element_rect(fill='transparent',                                         color ="gray"),            axis.text.x = element_text(angle = 70, hjust = 0.5,                          vjust = 0.5,color = "black",size=9))+     ylim(0,250)#设置y轴取值范围

到此,其实就差不多了,但是上图最上方边框是有网格线,下面进行删除并在图中添加数据。

添加数据

#添加数据,并规定数据的大小和位置pl + theme(panel.background=element_rect(fill='transparent',                                         color ="gray"),            axis.text.x = element_text(angle = 70, hjust = 0.5,                              vjust = 0.5,color = "black",size=9)) +     ylim(0,250) + #设置y轴取值范围  theme(panel.grid =element_blank()) + # 删去网格线  geom_text(mapping = aes(label = p$Freq),size=3,vjust=1.4)#添加数据,并规定数据的大小和位置,vjust值越大数据越往下,越小越往上

图例设置

通过guides(fill=FALSE)来移除图例

#去掉图例pl + theme(panel.background=element_rect(fill='transparent',                                         color ="gray"),            axis.text.x = element_text(angle = 70, hjust = 0.5,                              vjust = 0.5,color = "black",size=9)) +     ylim(0,250) + #设置y轴取值范围  theme(panel.grid =element_blank()) + # 删去网格线  geom_text(mapping = aes(label = p$Freq),size=3,vjust=1.4) + #添加数据,并规定数据的大小和位置  guides(fill=FALSE)

保存图

#可以利用RStudio直接保存
#可借助Cairo包进行保存为png、pdf等格式require(Cairo)CairoPNG("plot3.png")#单位为英寸ggplot(data=p, aes(x=diqu, y=Freq,fill=diqu), fill=diqu) +  geom_bar(stat="identity")+  theme(panel.background=element_rect(fill='transparent',color ="gray"),#背景色设为透明,边框为灰色        #设定x轴坐标标签的文字方向,大小,颜色        axis.text.x = element_text(angle = 70, hjust = 0.5, vjust = 0.5,color = "black",size=9))+  ylim(0,250)+#设置y轴取值范围  theme(panel.grid =element_blank())+ ## 删去网格线  geom_text(mapping = aes(label = p$Freq),size=3,vjust=1.4)#添加数据,并规定数据的大小和位置dev.off() #关闭图像设备,同时储存图片

保存中中文乱码解决

如果不能准确设置会出现如下图中中文乱码问题。

解决方法是,在CairoPNG(“plot.png”)中加入family设置,同时一定要注意把图例、坐标标签以及其他带中文的内容全部字体设置一致。

#可借助Cairo包进行保存为png、pdf等格式require(Cairo)CairoPNG("plot3.png",family="SimSun" )#单位为英寸,此处也可设置保存pdf格式CairoPDF("plot3.pdf",family="SimSun" )ggplot(data=p, aes(x=diqu, y=Freq,fill=diqu), fill=diqu) +  geom_bar(stat="identity")+   theme(panel.background=element_rect(fill='transparent',color ="gray"),#背景色设为透明,边框为灰色        legend.text=element_text(family="SimSun"), #改变图例的字体        #设定x轴坐标标签的文字方向,大小,颜色        axis.text.x = element_text(angle = 70, hjust = 0.5, vjust = 0.5,family="SimSun",color = "black",size=9))+  ylim(0,250)+#设置y轴取值范围  theme(panel.grid =element_blank())+ ## 删去网格线  geom_text(mapping = aes(label = p$Freq),size=3,vjust=1.4)#添加数据,并规定数据的大小和位置dev.off() #关闭图像设备,同时储存图片

其中family是各种字体,有如下参考:

字体 family 字体 family 黑体 SimHei 楷体 KaiTi 新宋体 NSimSun 楷体_GB2312 KaiTi_GB2312 仿宋 FangSong 微软正黑体 Microsoft JhengHei 仿宋_GB2312 FangSong_GB2312 微软雅黑 Microsoft YaHei 幼圆 YouYuan 隶书 LiSu 华文细黑 STXihei 华文楷体 STKaiti 华文宋体 STSong 华文中宋 STZhongsong 华文仿宋 STFangsong 方正舒体 FZShuTi 方正姚体 FZYaoti 华文彩云 STCaiyun 华文琥珀 STHupo 华文隶书 STLiti 华文行楷 STXingkai 华文新魏 STXinwei 新细明体 PMingLiU 细明体 MingLiU … … … …

http://blog.csdn.net/zx403413599/article/details/48581713 R语言ggplot之图例的设置
http://www.cnblogs.com/yangk/p/4760822.html R语言绘图高质量输出

原创粉丝点击