1. 首页
  2. 数据分析

数据挖掘知识脉络与资源整理(九)–柱形图

数据挖掘知识脉络与资源整理(九)–柱形图
柱形图
简介
英文:histogram或者column diagram
排列在工作表的列或行中的数据可以绘制到柱形图中。在柱形图中,通常沿水平轴组织类别,而沿垂直轴组织数值。
柱形图具有下列图表子类型:
簇状柱形图三维簇状柱形图簇状柱形图比较各个类别的数值。簇状柱形图以二维垂直矩形显示数值。三维簇状柱形图仅以三维格式显示垂直矩形,而不以三维格式显示数据。
注释:要以使用可更改的三个轴(水平轴、垂直轴和深度轴)的FineReport柱形图FineReport柱形图三维格式显示数据,应该使用三维柱形图子类型。
当您有代表下列内容的类别时,可以使用簇状柱形图类型:
数值范围(例如,直方图中的项目计数)。
特定的等级排列(例如,具有"非常同意"、"同意"、"中立"、"不同意"和"非常不同意"等喜欢程度)。
没有特定顺序的名称(例如,项目名称、地理名称或人名)。
堆积柱形图三维堆积柱形图堆积柱形图显示单个项目与整体之间的关系,它比较各个类别的每个数值所占总数值的大小。堆积柱形图以二维垂直堆积矩形显示数值。三维堆积柱形图以三维格式显示垂直堆积矩形,而不以三维格式显示数据。当有多个数据系列并且希望强调总数值时,可以使用堆积柱形图。
百分比堆积柱形图三维百分比堆积柱形图这些类型的柱形图比较各个类别的每一数值所占总数值的百分比大小。百分比堆积柱形图以二维垂直百分比堆积矩形显示数值。三维百分比堆积柱形图以三维格式显示垂直百分比堆积矩形,而不以三维格式显示数据。当有三个或更多数据系列并且希望强调所占总数值的大小时,尤其是总数值对每个类别都相同时,您可以使用百分比堆积柱形图。
三维柱形图三维柱形图使用可修改的三个轴(水平轴、垂直轴和深度轴),可对沿水平轴和深度轴分布的数据点(数据点:在图表中绘制的单个值,这些值由条形、柱形、折线、饼图或圆环图的扇面、圆点和其他被称为数据标记的图形表示。相同颜色的数据标记组成一个数据系列。)进行比较。当要对均匀分布在各类别和各系列的数据进行比较时,可以使用三维柱形图。
软件实现:R
基础的条形图
数据挖掘知识脉络与资源整理(九)–柱形图
ggplot(pg_mean, aes(x = group, y = weight)) + geom_bar(stat = "identity")
数据挖掘知识脉络与资源整理(九)–柱形图
ggplot(BOD, aes(x = Time, y = demand)) + geom_bar(stat = "identity")
数据挖掘知识脉络与资源整理(九)–柱形图
数据挖掘知识脉络与资源整理(九)–柱形图
看看有什么区别,在第二个图形中,数据中time没有6这个值,但是图形X轴还是画出来了,这就是对于分类变量和连续变量的不同.
如果把时间转为离散的分类型,再看看:,并没有画出6来
ggplot(BOD, aes(x = factor(Time), y = demand)) + geom_bar(stat = "identity")
数据挖掘知识脉络与资源整理(九)–柱形图
看看如何给条形图上色:运用fill=" ",我们发现,fill是填充色,colour是边框色,(这里colour是英式英语颜色的写法,等价于美式英语color)
ggplot(pg_mean, aes(x = group, y = weight)) + geom_bar(stat = "identity", fill = "lightblue",
colour = "black")
数据挖掘知识脉络与资源整理(九)–柱形图
2、
涉及分组变量的条形图
数据挖掘知识脉络与资源整理(九)–柱形图
ggplot(cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar)) + geom_bar(stat="identity",position = "dodge")
我们发现fill后面跟着的是一个变量,且是一个分类变量,得到的结果是颜色会根据分类不同使用不同颜色.
position = "dodge"将同类条形图并排放着,(dodge英文意思是闪躲回避的意思,这样记它的作用会比较快)
数据挖掘知识脉络与资源整理(九)–柱形图
我们想改一下颜色怎么办?fill后面已经跟了分类变量,那我们只需要再添加一个图层就可以啦,这时可用
scale_fill_brewer(palette = "Pastel1")方便记忆palette的英文意思是调色板,面板的意思.这里便是用的叫Pastel1的色板,.Pastel的英文意思是彩色粉笔,有没有发现颜色没有那么浓郁啦.是有点粉笔的感觉哈.还可以自己设定颜色,scale_fill_manual(values = c("#669933", "#FFCC66"))这里manual英文意思是"手工的",
ggplot(cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar)) + geom_bar(position = "dodge",stat="identity") + scale_fill_brewer(palette = "Pastel1")
数据挖掘知识脉络与资源整理(九)–柱形图
ggplot(cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar)) + geom_bar(position = "dodge",stat="identity") + scale_fill_manual(values = c("#669933", "#FFCC66")) #这个颜色你喜欢吗?
数据挖掘知识脉络与资源整理(九)–柱形图
另外我们发现,上面图形都是两两一组,那如果有一组就一个值怎么办,那么图形会确失一条bar,然后加宽,具体看图
ce <- cabbage_exp[1:5, ]
ggplot(ce, aes(x = Date, y = Weight, fill = Cultivar)) + geom_bar(position = "dodge",stat="identity", colour = "black") + scale_fill_brewer(palette = "Pastel1")
数据挖掘知识脉络与资源整理(九)–柱形图
3、
计数数据条形图
前面我们都是stat="identity"即每一个bar的高度根据另一个数值变量来决定,那如果,面对像下面的数据,caret变量是分类因子型,这列变量中同一水平的因子有好几个,那么我们画条形图时,一般采用频数型,这时用水平出现的频数当做bar的高度.stat="bin"当然也可以不写,因为geom_bar默认是bin数据挖掘知识脉络与资源整理(九)–柱形图ggplot(diamonds, aes(x = carat)) + geom_bar()

## 可以用 "binwidth = x" to 调整bar的宽度

数据挖掘知识脉络与资源整理(九)–柱形图

4、
对正负数用不同的颜色作图

数据挖掘知识脉络与资源整理(九)–柱形图

csub <- subset(climate, Source == "Berkeley" & Year >= 1900) #选取Source == "Berkeley" & Year >= 1900的数据

csub$pos <- csub$Anomaly10y >= 0 #创建csub$pos 变量为csub$Anomaly10y >= 0 的数据

ggplot(csub, aes(x = Year, y = Anomaly10y, fill = pos)) + geom_bar(stat = "identity",

position = "identity") #正负用不同颜色表示,还挺漂亮的呵,可是有点感觉不对啊,你有没有发现?

数据挖掘知识脉络与资源整理(九)–柱形图

在我们日常生活中,红色一般象征正,暖色调嘛,蓝色一般表示负,冷色调呀,有没有?你家电线红色是不是火线,红色是不是正极,虽然上图没有错,但是我们想换一下,正的为红色,负的为蓝色咋办?而且我不想要旁边的图例了,怎么办?

用 scale_fill_manual() 和 guide=FALSE

ggplot(csub, aes(x = Year, y = Anomaly10y, fill = pos)) + geom_bar(stat = "identity",

position = "identity", colour = "black", size = 0.25) + scale_fill_manual(values = c("#CCEEFF",

"#FFDDDD"), guide = FALSE)

数据挖掘知识脉络与资源整理(九)–柱形图

5、
调整条形宽度和空间

这应该前面讲过,width = xx来控制

ggplot(pg_mean, aes(x = group, y = weight)) + geom_bar(stat = "identity")

数据挖掘知识脉络与资源整理(九)–柱形图

ggplot(pg_mean, aes(x = group, y = weight)) + geom_bar(stat = "identity", width = 0.5)

数据挖掘知识脉络与资源整理(九)–柱形图

ggplot(pg_mean, aes(x = group, y = weight)) + geom_bar(stat = "identity", width = 1)

数据挖掘知识脉络与资源整理(九)–柱形图

那如果是一组一组的条形图我想让他们中间有点缝隙怎么办?用position = position_dodge(0.7)来控制

ggplot(cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar)) + geom_bar(stat = "identity",

width = 0.5, position = "dodge")

数据挖掘知识脉络与资源整理(九)–柱形图

ggplot(cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar)) + geom_bar(stat = "identity", width = 0.5, position = position_dodge(0.7))

数据挖掘知识脉络与资源整理(九)–柱形图

6、
条形图的摆放,堆叠条形图

ggplot(cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar)) + geom_bar(stat = "identity")

数据挖掘知识脉络与资源整理(九)–柱形图

有没有发现,右边图例红色在上,而图形红色在下?修改一下

ggplot(cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar)) + geom_bar(stat = "identity") +

guides(fill = guide_legend(reverse = TRUE))

数据挖掘知识脉络与资源整理(九)–柱形图

7、

添加标签

给每一个bar添加一个标签,表示其具体数值是多少.这里标签使用的是weight变量的数值,因为纵坐标本来就是weight

vjust表示距离bar的顶端有多少,你也可以设置成负数让标签在bar上面

ggplot(cabbage_exp, aes(x = interaction(Date, Cultivar), y = Weight)) + geom_bar(stat = "identity") + geom_text(aes(label = Weight), vjust = 1.5, colour = "white")

数据挖掘知识脉络与资源整理(九)–柱形图ggplot(cabbage_exp, aes(x = interaction(Date, Cultivar), y = Weight)) + geom_bar(stat = "identity") + geom_text(aes(label = Weight), vjust = -0.2,color="red")

数据挖掘知识脉络与资源整理(九)–柱形图堆栈的条形图加标签:需要另一个包plyr

library(plyr)

ce <- arrange(cabbage_exp, Date, Cultivar) #根据Date,Cultivar 排序

ce <- ddply(ce, "Date", transform, label_y = cumsum(Weight)) #增加新变量label_y

ggplot(ce, aes(x = Date, y = Weight, fill = Cultivar)) + geom_bar(stat = "identity") + geom_text(aes(y = label_y, label = Weight), vjust = 1.5, colour = "white")

数据挖掘知识脉络与资源整理(九)–柱形图这就是部分条形图的深加工,我们虽然展示了很多功能,但在实际中我们还需要将这些功能组合。

推荐阅读:

http://www.ppvke.com/10380.htmlPPV课视频教程

http://www.ppvke.com/10217.htmlPPV课视频教程


PPV课整理文章,未经允许严禁转载

原文始发于微信公众号(PPV课数据科学社区):数据挖掘知识脉络与资源整理(九)–柱形图

原创文章,作者:ppvke,如若转载,请注明出处:http://www.ppvke.com/archives/13826

联系我们

4000-51-9191

在线咨询:点击这里给我发消息

工作时间:周一至周五,9:30-18:30,节假日休息