当前位置:主页 > >

R语言数据可视化绘制Circular bar plot实现环形柱状图

时间:2023-01-07 09:28:13 | 栏目: | 点击:

不知不觉,距离小仙上次发文已经过去五个多月了。R语言作图系列的更新频率跟理想中的一月一次差别有点忒大了,不得不让小仙陷入深深的反思,对于时间的规划也有了一些新的感悟。
不知道大家有没有跟我一样的感受啊,举些例子:
放学、下班或者放假之后先把学习任务扔在一边,心想着,我先玩会游戏,等会玩够了再做;
网上看到一篇干货满满的文章,先点收藏,心想着,等我有空的时候再仔细看看;
听说身边的朋友利用空余时间做了什么了不起的事情,心想着,等我有空了,我也可以试一试;

这样的例子数不胜数了,哈哈,小仙常想的就是,一个月有四个周末,这周末先休息,等下个周末再写文章…
就这样,周末要么觉得自己前一段太辛苦了要放松一下,要么在赶紧急的deadline,反倒是重要但是不那么紧急,也没有人给设立deadline的发文大事业被耽误了,哈哈。
现在小仙就觉得,等我有空了 = 没有空, 很多时候,一些可做可不做的事情,等着等着就不做了。如果真的想做某件事情,要么立刻马上行动起来,要么就安排好具体的时间(某一天的几点到几点之间),并且把有可能发生冲突的事情也安排好。
可惜目前小仙也只是能意识到这个问题,还不能合理安排好自己的时间,现在还是在摸索阶段…

言归正传,这次给大家分享的图,是这个样子的,姑且称之为环形柱状图

Step1. 绘图数据的准备

首先还是要把你想要绘图的数据调整成R语言可以识别的格式excel中保存成csv格式。
数据的格式如下图:

作图数据

Step2. 绘图数据的读取

data <- read.csv(“your file path”, header = T) 

Step3.绘图所需package的调用

library(ggplot2)

Step4.绘图

先画出普通的柱状图

p1 <- ggplot(data, aes(x = 书名,  y = 销量, fill = 书名)) + 
  geom_bar(stat = "identity", width = 0.5) +
  theme(axis.text.x = element_text(angle = 45, hjust = 0.8, vjust = 0.9)) +
  xlab("销量排行前十") + theme(legend.position = "none") +
  scale_y_continuous("销量", breaks = c(0, 200000, 400000, 600000),
                     labels = c("0", "200000", "400000", "600000"))
p1

环形柱状图

p2 <- ggplot (data, aes(x = 书名,y = 销量, fill = 书名)) + 
  geom_bar(stat = "identity", width = 0.5) +
  theme(axis.text.x = element_text(angle = 45, hjust = 0.8, vjust = 0.9)) +
  xlab("销量排行前十") + theme(legend.position = "none") +
  scale_y_continuous("销量", breaks = c(0, 200000, 400000, 600000),
                     labels = c("0", "200000", "400000", "600000")) +
  coord_polar(start = 7)
p2

排好序的环形柱状图

data$书名 <- factor(data$书名)
data$书名 <- reorder(data$书名, -data$销量)
p3 <- ggplot(data, aes(x = 书名,y = 销量, fill = 书名)) + 
  geom_bar(stat = "identity", width = 0.5) +
  theme(axis.text.x = element_text(angle = 45, hjust = 0.8, vjust = 0.9)) +
  xlab("销量排行前十") + theme(legend.position = "none")+
  scale_y_continuous("销量", breaks = c(0, 200000, 400000, 600000),
                     labels = c("0","200000","400000","600000")) +coord_polar(start = 7)
p3

在这里插入图片描述

调整颜色

p4 <- ggplot(data, aes(x =书名,y = 销量,fill = 分组)) + 
     geom_bar(stat = "identity", width = 0.5) +
     theme(axis.text.x = element_text(angle = 45, hjust = 0.8, vjust = 0.9))+
     xlab("销量排行前十") + theme(legend.position = "none")+
     scale_y_continuous("销量", breaks = c(0, 200000, 400000, 600000),
                     labels = c("0","200000","400000","600000")) +
     coord_polar(start = 7) +
     scale_fill_manual(values = c(第一梯队="#E41A1C",第二梯队="#377eb8",第三梯队="gray"))
p4

注意事项

在调整颜色的时候有个小插曲,一开始用的语句是

scale_fill_manual(values = c("#E41A1C", "#377eb8", "gray"))

但是得到的图是这样的

并不是"第一梯队"给到了红色
debug的时候发现,data$分组 这一列的数据是这样的,怪不得给不到想要的颜色

把scale_fill_manual()的语句调整一下就可以啦

scale_fill_manual(values = c(第一梯队="#E41A1C",第二梯队="#377eb8",第三梯队="gray"))

您可能感兴趣的文章:

相关文章