美文网首页
表格可视化

表格可视化

作者: 一路向前_莫问前程_前程似锦 | 来源:发表于2018-11-22 15:22 被阅读22次

数据源
https://raw.githubusercontent.com/lgellis/MiscTutorial/master/Austin/Imagine_Austin_Indicators.csv

library(data.table)
library(dplyr)

#Download the Austin indicator data set
#Original data set from: https://data.austintexas.gov/City-Government/Imagine-Austin-Indicators/apwj-7zty/data
austinData= data.table::fread('G:/Imagine_Austin_Indicators.csv', data.table=FALSE, header = TRUE, stringsAsFactors = FALSE)

i1 <- austinData %>%
  filter(`Indicator Name` %in% 
           c('Prevalence of Obesity', 'Prevalence of Tobacco Use', 
             'Prevalence of Cardiovascular Disease', 'Prevalence of Diabetes')) %>%
  select(c(`Indicator Name`, `2011`, `2012`, `2013`, `2014`, `2015`, `2016`)) %>%
  mutate (Average = round(rowMeans(
    cbind(`2011`, `2012`, `2013`, `2014`, `2015`, `2016`), na.rm=T),2), 
    `Improvement` = round((`2011`-`2016`)/`2011`*100,2))
prevalence = i1
image.png

只需要一个简单的formattable()函数,我们就可以得到该数据的整洁版本,并且表头,也就是变量名自动加粗了。我们还可以设置不同行的对齐方式,使用的是align参数,其中”l”表示左对齐,“r”表示右对齐。

library(formattable)
formattable(prevalence)


image.png
formattable(prevalence, align = c("l",rep("r", NCOL(prevalence) - 1)))
image.png
prevalence[, "Improvement"] = prevalence[, "Improvement"] / 100
formattable(prevalence, 
            align = c("l",rep("r", NCOL(prevalence) - 1)),
            list(`Indicator Name` = formatter("span", style = ~ style(color = "grey", font.weight = "bold")), 
                 `Average` = color_bar("#FA614B"), 
                 `Improvement` = percent))

formatter 创建一个格式化程序函数来创建HTML元素,第一个参数默认为span

image.png
formattable(prevalence, 
            align = c("l",rep("r", NCOL(prevalence) - 1)),
            list(`Indicator Name` = formatter("span", style = ~ style(color = "grey", font.weight = "bold")), 
                 `Average` = color_bar("#FA614B"), 
                 `Improvement` = formatter("span", 
                                           x ~ percent(x / 100),
                                           style = x ~ style(color = ifelse(x < 0, "red", "green")))))

需要用到数据值的时候,则为x ~,如果不需要对数据值进行判断,则直接为~

image.png
formattable(prevalence, 
            align = c("l",rep("r", NCOL(prevalence) - 1)),
            list(`Indicator Name` = formatter("span", style = ~ style(color = "grey", font.weight = "bold")), 
                 `Average` = color_bar("#FA614B"), 
                 `Improvement` = formatter("span", 
                                           x ~ icontext(ifelse(x > 0, "ok", "remove"), ifelse(x > 0, "Yes", "No")), 
                                           style = x ~ style(color = ifelse(x < 0, "red", "green")))))
image.png
formattable(prevalence, align = c("l",rep("r", NCOL(prevalence) - 1)), list(
  `Indicator Name` = formatter("span", style = ~ style(color = "grey",font.weight = "bold")), 
  area(col = 2:7) ~ color_tile("#DeF7E9", "#71CA97")))
区域渐变色
image.png
prev.sig = prevalence[, c(1, 6:7)]
prev.sig$z = c(-1.97, .12, 2.2, 2.1)
prev.sig

formattable(prev.sig,
            list(z = FALSE,
                 `2016` = formatter("span", 
                                    style = ~ style(color = ifelse(`2016` >`2015`, "green", "red")),                                    
                                    ~ icontext(sapply(`z`, function(x) if (x < -1.96) "arrow-down" else if (x > 1.96) "arrow-up" else ""), `2016`))))
purrr版本
formattable(prev.sig,
            list(z = FALSE,
                 `2016` = formatter("span", 
                                    style = ~ style(color = ifelse(`2016` >`2015`, "green", "red")),                                    
                                    ~ icontext(purrr::map_chr(prev.sig$z, function(x) if (x < -1.96) "arrow-down" else if (x > 1.96) "arrow-up" else ""), `2016`))))
image.png
library(sparkline)
library(formattable)
df = data.frame("Type" = c("bar", "line", "bullet", "pie", "tristate", "discrete"),
                Sparkline = c(as.character(htmltools::as.tags(sparkline(c(1,2,7,6,5), type = "bar"))), 
                              as.character(htmltools::as.tags(sparkline(c(1,2,7,6,5), type = "line"))), 
                              as.character(htmltools::as.tags(sparkline(c(1,2,7,6,5), type = "bullet"))), 
                              as.character(htmltools::as.tags(sparkline(c(1,2,7,6,5), type = "pie"))), 
                              as.character(htmltools::as.tags(sparkline(c(-1,0,1,1,1,-1,0,2), type = "tristate"))), 
                              as.character(htmltools::as.tags(sparkline(c(1,2,7,6,5), type = "discrete")))))
out = as.htmlwidget(formattable(df))
out$dependencies = c(out$dependencies, htmlwidgets:::widget_dependencies("sparkline", "sparkline"))
out

表格出图

image.png
library(formattable)
library(sparkline)
prevalence$`&nbsp` = c(4.1, -.3, .5, 1.4)
prevalence$`2012` = apply(prevalence[, 2:7], 1, FUN = function(x) as.character(htmltools::as.tags(sparkline(as.numeric(x), type = "line"))))
names(prevalence)[3] = "&nbsp&nbsp"
new.prevalance = prevalence[, c(1, 2, 3, 7, 10)]                          
out = as.htmlwidget(formattable(new.prevalance,
                                align = c("l",rep("r", NCOL(prevalence) - 1)), 
                                list(`Indicator Name` = formatter("span", style = ~ style(color = "grey", font.weight = "bold")),
                                     "&nbsp" = formatter("span", 
                                                         style = ~ style(color = ifelse(`2016` >`2011`, "green", "red")),                                    
                                                         ~ icontext(sapply(`&nbsp`, function(x) if (x < -1.96) "arrow-down" else if (x > 1.96) "arrow-up" else ""))))))                          
out$dependencies <- c(out$dependencies, htmlwidgets:::widget_dependencies("sparkline", "sparkline"))
out

image.png

相关文章

  • Pandas使用笔记

    Pandas是用来生成可视化表格,并且对表格进行运算的。可以将numpy的数据进行生成表格。在学习Q-Learni...

  • 表格可视化

    数据源https://raw.githubusercontent.com/lgellis/MiscTutorial...

  • 大数据Clouder认证:使用Quick BI 制作企业数据分析

    数据可视化与图形报表介绍 报表:用表格、图表等格式来显示数据。常见的报表格式有数字表格、图表等、报表是商业智能(B...

  • 图表入门--echarts篇

    1. 图表(echarts)--数据可视化 与传统形式中用表格或文档展现数据的方式相比,可视化能将数据以更加直观的...

  • 表格可视化的逻辑

    要理解表格可视化的逻辑,首先要明确的是:做表格的目的是什么。我理解的:表格是为了呈现数据分析的结果,以支撑我们做下...

  • 从CSV生成LaTeX表格

    LaTeX中的表格一直是一件麻烦事,想要把可视化软件中生成的表格导出成LaTeX的表格还是颇费工夫的。我且写几个大...

  • 【大屏可视化】城市GDP数据可视化设计案例分享

    前言 本期分享城市GDP大屏数据可视化设计,通过设计让表格里杂乱的数据更好的可视化呈现;通过数据的背景定义设计主题...

  • Power BI矩阵设置十三招,美化你的表格

    在PowerBI中,虽然有各种炫酷的可视化,但普通的矩阵和表格,绝对可以排到使用最频繁的图表类型前列,大多数可视化...

  • Java 在Word创建表格

    表格作为一种可视化交流模式及组织整理数据的手段,在各种场合及文档中应用广泛。常见的表格可包含文字、图片等元素,我们...

  • 熟练掌握PowerBI中的表格可视化

    在PowerBI的可视化对象中,还有两个「表格」对象,表格的作用不仅可以在报表提供明细数据,还经常用来测试度量值的...

网友评论

      本文标题:表格可视化

      本文链接:https://www.haomeiwen.com/subject/kbslqqtx.html