建立数据
巧妇难为无米之炊,按例我得先搬出我得伙伴们。这次为了让图像效果更加好看,对数据进行了稍微的调整。
姓名 | 性别 | 科目 | 成绩 |
---|---|---|---|
顾未易 | 男 | 语文 | 97 |
顾未易 | 男 | 数学 | 95 |
顾未易 | 男 | 英语 | 89 |
司徒末 | 女 | 语文 | 84 |
司徒末 | 女 | 数学 | 81 |
司徒末 | 女 | 英语 | 91 |
宁为谨 | 男 | 语文 | 98 |
宁为谨 | 男 | 数学 | 86 |
宁为谨 | 男 | 英语 | 88 |
郑叮叮 | 女 | 语文 | 86 |
郑叮叮 | 女 | 数学 | 84 |
郑叮叮 | 女 | 英语 | 95 |
韩商言 | 男 | 语文 | 92 |
韩商言 | 男 | 数学 | 87 |
韩商言 | 男 | 英语 | 85 |
佟年 | 女 | 语文 | 92 |
佟年 | 女 | 数学 | 87 |
佟年 | 女 | 英语 | 91 |
## 簇状条形图
### 数据建立
name_cz <- c(rep(c("顾未易", "司徒末", "宁为谨",
"郑叮叮", "韩商言", "佟年"), each = 3)) # 姓名
sex_cz <- c(rep(c(rep(c("男", "女"), each = 3)), 3)) # 性别
subject <- c(rep(c("语文", "数学", "英语"), 6)) # 科目
score_cz <- c(97,95,89,84,81,91,98,86,88,86,84, # 成绩
95,92,87,85,92,87,91)
data_cz <- data.frame(name_cz, sex_cz, subject, score_cz) # 合并为数据框
如果对代码中rep()函数不太了解的可移步观看R语言|数据结构(一) 向量 ———R语言入门到入土系列(二)文章。
在有了数据基础后,就可以进行数据的可视化工作。
绘制簇状条形图
### 基本簇状条形图
ggplot(data_cz,aes(x = name_cz, y = score_cz, fill = subject))+ # 选择xy轴的数据
geom_bar(position = "dodge", stat = "identity") # 作出簇状条形图
由于没有对颜色进行填充,这边显示的是系统默认的颜色配色,并且条没有框。为了使其漂亮一些,进而加工。
条形图着色
具体和普通条形图着色方式一样。
### 更改颜色加黑框
ggplot(data_cz,aes(x = name_cz, y = score_cz, fill = subject))+ # 按照学科进行填充颜色
geom_bar(position = "dodge", stat = "identity", colour = "black")+ # colour加条的边框
scale_fill_manual(values = c("#363433", "#aa6a4c", "#b89485")) # 用色号进行调色
条的大小更改
与普通条形图更改一样。为了使得对比效果更加明显,则将数值设置为了0.2。
### 更改条的大小
ggplot(data_cz,aes(x = name_cz, y = score_cz, fill = subject))+ # 按照学科进行填充颜色
geom_bar(position = "dodge", stat = "identity", width = 0.2 )+ # width更改条的大小
scale_fill_manual(values = c("#363433", "#aa6a4c", "#b89485")) # 用色号进行调色
条形图间间距
将geom_bar()函数中的参数改为position_dodge(with= num),当num越大则,条之间的大小越大。
ggplot(data_cz,aes(x = name_cz, y = score_cz, fill = subject))+ # 按照学科进行填充颜色
geom_bar(position = position_dodge(width = 1), # colour加条的边框
stat = "identity" )+
scale_fill_manual(values = c("#363433", "#aa6a4c", "#b89485")) # 用色号进行调色
堆积条形图
堆积条形图与簇状条形图的区别在于geom_bar()函数中的position的设置,不予任何设置时就是堆积条形图。针对于颜色,大小的改变与前面一样。下面不给讲解了。
### 堆积条形图
ggplot(data_cz,aes(x = name_cz, y = score_cz, fill = subject))+ # 按照学科进行堆积
geom_bar(stat = "identity" )
完整代码仅供参考
## 簇状条形图
### 数据建立
name_cz <- c(rep(c("顾未易", "司徒末", "宁为谨",
"郑叮叮", "韩商言", "佟年"), each = 3)) # 姓名
sex_cz <- c(rep(c(rep(c("男", "女"), each = 3)), 3)) # 性别
subject <- c(rep(c("语文", "数学", "英语"), 6)) # 科目
score_cz <- c(97,95,89,84,81,91,98,86,88,86,84, # 成绩
95,92,87,85,92,87,91)
data_cz <- data.frame(name_cz, sex_cz, subject, score_cz) # 合并为数据框
### 基本簇状条形图
ggplot(data_cz,aes(x = name_cz, y = score_cz, fill = subject))+ # 选择xy轴的数据
geom_bar(position = "dodge", stat = "identity") # 作出簇状条形图
### 更改颜色加黑框
ggplot(data_cz,aes(x = name_cz, y = score_cz, fill = subject))+ # 按照学科进行填充颜色
geom_bar(position = "dodge", stat = "identity", colour = "black")+ # colour加条的边框
scale_fill_manual(values = c("#363433", "#aa6a4c", "#b89485")) # 用色号进行调色
### 更改条的大小
ggplot(data_cz,aes(x = name_cz, y = score_cz, fill = subject))+ # 按照学科进行填充颜色
geom_bar(position = "dodge", stat = "identity", width = 0.2 )+ # width更改条的大小
scale_fill_manual(values = c("#363433", "#aa6a4c", "#b89485")) # 用色号进行调色
### 更改条之间的间距
ggplot(data_cz,aes(x = name_cz, y = score_cz, fill = subject))+ # 按照学科进行填充颜色
geom_bar(position = position_dodge(width = 1), # colour加条的边框
stat = "identity" )+
scale_fill_manual(values = c("#363433", "#aa6a4c", "#b89485")) # 用色号进行调色
### 堆积条形图
ggplot(data_cz,aes(x = name_cz, y = score_cz, fill = subject))+ # 按照学科进行堆积
geom_bar(stat = "identity" )