R语言可视化中的图表美化与套用是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
ggplot函数所制作的图表默认设计风格虽然经过设计师的精雕细琢,但是并不是尽如人意。
毕竟在这个大众审美水平水平越来越高的时代里,企业中的各式报告也强调与企业的VI相互统一,形成自身风格与特点。
这样就要求R语言所制作的图表能够根据所需的风格与主题,高度可定制。当然ggplot函数中是支持这种多样性的订制需求的,甚至像那些知名的咨询或者顶级财经媒体的御用图表模板已经被制作成了图表主题分享在R语言的主题包之中。
接下来要介绍关于图表主题设置的一些细节:
关于柱形图与条形图的转化问题:
这个问题昨天已经提到了,R语言是不区分柱形图、条形图的,两者都叫Barplot,只是开口方向不同。(原因前文已经说明)
柱形图与条形图之间的转换秩序一句代码即可:
coord_flip() #柱形图与条形图之间翻转
ggplot(mpg,aes(class,displ))+geom_bar(stat="identity",fill="steelblue")
ggplot(mpg,aes(class,displ))+geom_bar(stat="identity",fill="steelblue")+coord_flip()
柱形图/条形图按照指标顺序排序:
默认情况下柱形图指标顺序非常混乱,我们可以通过参数设置让柱形图按照指标由高到低或者由低到高排序。
我们从ggplot默认自带数据集mtcars中取前8条记录作图:
data<-mtcars[0:8,]
ggplot(data, aes(row.names(data), qsec))+ geom_bar(stat = "identity", fill = "steelblue")
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+ geom_bar(stat = "identity", fill = "steelblue")
添加排序参数之后,图表看上去舒服很多,但是X轴横坐标英文名字太长,我们采用条形图规避,或者将X轴标签文字旋转90度。
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+ geom_bar(stat = "identity", fill = "steelblue")+coord_flip()
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+ geom_bar(stat = "identity", fill = "steelblue")+theme(axis.text.x=element_text(angle = 90, colour = "black"))
由于添加排序参数,导致默认X轴标题被更改,这里我们要从新定义X轴、Y轴标题
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+ geom_bar(stat = "identity", fill = "steelblue")+theme(axis.text.x=element_text(angle = 90, colour = "black"))+labs(x = "Cars", y = "Q seconds")
定义X轴、Y轴标签文本的大小、颜色、字体
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+
geom_bar(stat = "identity", fill = "steelblue")+
theme(axis.text.x=element_text(angle = 90,size = 10, colour = "black"),axis.text.y=element_text(size = 10, colour = "black"))+labs(x = "Cars", y = "Q seconds")+theme(text=element_text(family = "arial", size = 20))
添加标题:
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+
geom_bar(stat = "identity", fill = "steelblue")+
theme(axis.text.x=element_text(angle = 90,size = 10, colour = "black"),axis.text.y=element_text(size = 10, colour = "black"))+labs(x = "Cars", y = "Q seconds")+theme(text=element_text(family = "arial", size = 20))+ggtitle("An Indrouction of BarPlot ")
还有柱形图的背景带着网格线和灰色底色,如果想要修改也需要单独调整参数。
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+
geom_bar(stat = "identity", fill = "steelblue")+
theme(axis.text.x=element_text(angle = 90,size = 14, colour = "black"),axis.text.y=element_text(size = 14, colour = "black"))+labs(x = "Cars", y = "Q seconds")+theme(text=element_text(family = "arial", size = 20))+ggtitle("An Indrouction of BarPlot ")+
theme(panel.grid = element_blank())+theme(panel.background = element_blank())
调整柱形图的数据条宽度:
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+
geom_bar(stat = "identity", fill = "steelblue",width=0.5)+
theme(axis.text.x=element_text(angle = 90,size = 14, colour = "black"),axis.text.y=element_text(size = 14, colour = "black"))+labs(x = "Cars", y = "Q seconds")+theme(text=element_text(family = "arial", size = 20))+ggtitle("An Indrouction of BarPlot ")+
theme(panel.grid = element_blank())+theme(panel.background = element_blank())
为图标添加数据标签:
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+
geom_bar(stat = "identity", fill = "steelblue",width=0.5)+
theme(axis.text.x=element_text(angle = 90,size = 14, colour = "black"),axis.text.y=element_text(size = 14, colour = "black"))+labs(x = "Cars", y = "Q seconds")+theme(text=element_text(family = "arial", size = 20))+ggtitle("An Indrouction of BarPlot ")+
theme(panel.grid = element_blank())+theme(panel.background = element_blank())+geom_text(aes(label = qsec, vjust = -0.8, hjust = 0.5)
大家可以看到,以上调整过程全部需要通过ggplot函数附加参数完成,机会每一个图表元素都有对应的调整参数,调整起来其实蛮辛苦的,不过对于同一类参数可以放在同一参数系统中去,也就是简化代码:
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+
geom_bar(stat = "identity", fill = "steelblue",width=0.5)+
labs(x = "Cars", y = "Q seconds")+
ggtitle("An Indrouction of BarPlot ")+
geom_text(aes(label = qsec, vjust = -0.8, hjust = 0.5))+
theme(
axis.text.x=element_text(angle = 90,size = 14, colour = "black"),
axis.text.y=element_text(size = 14, colour = "black"),
text=element_text(family = "arial", size = 20),
panel.grid = element_blank(),
panel.background = element_blank()
)
经过简化后的代码还是如上所示的那么长,而且我还是以最为简单的单序列柱形图为例所介绍的呢,而且还没有考虑到对坐标轴刻度线长度、刻度范围的调整,如果是多序列条形图甚至是分面的多序列条形图的调整元素就更多了,以上的代码还能继续写出几十行呢(哈哈夸张了,不过真的很长呢-_-)
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+ #x轴排序
geom_bar(stat = "identity", fill = "SandyBrown",width=0.8)+ #填色、柱形宽度
labs(x = "Cars", y = "Q seconds")+ #X、Y轴标题
ggtitle("An Indrouction of BarPlot ")+ #图表标题
geom_text(aes(label = qsec, vjust = -0.5, hjust = 0.5))+ #添加数据标签
theme(
axis.text.x=element_text(angle = 90,size = 12, colour = "DarkGrey"),
#X轴标签文本旋转、大小、颜色
axis.text.y=element_text(size = 12, colour = "DarkGrey"),
#Y轴标签文本大小、颜色
axis.ticks.length=unit(0.5,'cm'),
#坐标轴刻度线长度
text=element_text(family = "arial", size = 20,colour = "DimGrey"),
#图表内文本字体
panel.grid = element_blank(),
panel.background = element_blank()
) #清空图层背景、网格线
所以呢,如果想要找到一种即不需要写很长很冗杂的代码,而且又能将图表美化的超级漂亮的方法,那真的就完美了呢~
那就要站在巨人的肩膀上喽,使用那些发烧友所写的行业标杆级的图表主题包。
关于R语言可视化中的图表美化与套用是怎样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。