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是各种字体,有如下参考:
http://blog.csdn.net/zx403413599/article/details/48581713 R语言ggplot之图例的设置
http://www.cnblogs.com/yangk/p/4760822.html R语言绘图高质量输出
阅读全文
5 0
- R语言ggplot2条形图详解
- R ggplot2条形图
- ggplot2绘制条形图
- ggplot2中的条形图 geom_bar()
- R语言-ggplot2柱状堆叠图
- R语言ggplot2画图
- R语言ggplot2饼状图
- R语言GGPlot2
- 使用R语言画圆弧条形图
- ggplot2-条形图和折线图
- [置顶]R语言 ggplot2包
- R语言 绘图 (ggplot2)
- R ggplot2 做图
- R -ggplot2 气泡图
- R ggplot2线性图
- R之条形图
- R语言ggplot2包之画折线图
- r语言之棘状图spinogram与堆砌条形图
- mysql函数
- linux0.11环境配置
- RC.c(参考匿名的)
- myeclipse中部署项目后改名了,怎么tomcat还是原项目名,如何改
- HDOJ 3336 Count the string
- R语言ggplot2条形图详解
- UART1.c(参考匿名的)
- 计算导论与C语言基础week10_2
- zookeeper 安装
- UART2.c(参考匿名的)
- Android-Studio-gradle版本出错问题
- 1008: 美元和人民币
- usart.c(参考匿名的)
- 正则表达式全解