当前位置:天才代写 > tutorial > R语言教程 > GGPLT2如何绘制热力图

GGPLT2如何绘制热力图

2018-08-06 08:00 星期一 所属: R语言教程 浏览:1510

此帖子显示如何使用非常相似的结果使用GGPLT2.

nba_heatmap_revised.png


数据导入

上赛季美国 NBA 篮球统计中使用的流量数据databasebasketball.com可直接从其网站下载具有该数据的 CSV 文件。

> nba <- read.csv (http://datasets.flowingdata.com/ppg2008.csv

玩家按得分排序,名字变量转换为确保情节正确排序的因素。

> nba$Name <- with(nba, reorder(Name, PTS))

同时 FlowingData 使用热图功能统计信息-需要绘制的值为矩阵格式的包,GGPLT2使用数据文件进行操作。为了便于处理,数据文件 RAME 从宽格式转换为长格式。

游戏统计具有非常不同的范围,使得它们能够比较所有的个体统计信息。

> library(ggplot2)
> nba.m <- melt(nba)
> nba.m <- ddply(nba.m, .(variable), transform,
+     rescale = rescale(value))

绘图

没有特定的热图绘图功能GGPLT2但结合了Geom _ tile用平滑的梯度填充很好地完成工作。

> (p <- ggplot(nba.m, aes(variable, Name)) + geom_tile(aes(fill = rescale),
+     colour = "white") + scale_fill_gradient(low = "white",
+     high = "steelblue"))

basketball_heatmap-008.png

对格式化进行了少量整理,并准备了 “热贴图” 图以进行演示。

> base_size <- 9
> p + theme_grey(base_size = base_size) + labs(x = "",
+     y = "") + scale_x_discrete(expand = c(0, 0)) +
+     scale_y_discrete(expand = c(0, 0)) + opts(legend.position = "none",
+     axis.ticks = theme_blank(), axis.text.x = theme_text(size = base_size *
+         0.8, angle = 330, hjust = 0, colour = "grey50"))

basketball_heatmap-010.png


更新更新

在制备上述图的数据时,所有的变量都被随机化,以便它们在0和1之间。

吉姆在评论中正确地指出(而我并不知道这一点)热图-函数使用不同的缩放方法,因此曲线不相同。下面是热贴图的更新版本,它看起来更类似于原始贴图。

> nba.s <- ddply(nba.m, .(variable), transform,
+     rescale = scale(value))
> last_plot() %+% nba.s

basketball_heatmap-013.png

 

    关键字:

天才代写-代写联系方式