大部分数据可视化效果不佳

直方图和散点图是数据可视化和变量之间关系的很好方法,但最近我一直在想我缺少哪些可视化技术。 你认为什么是最不被充分利用的情节?

答案应该是:

  • 在实践中不常用。
  • 没有很多背景讨论就可以理解。
  • 适用于许多常见情况。
  • 包含可重复的代码来创建一个示例(最好在R中)。 链接的图像会很好。

  • 我非常同意其他海报:塔夫特的书很棒,值得一读。

    首先,我会在今年早些时候向您指出一个关于ggplot2和ggobi的非常好的教程,内容来自“查看数据”。 除此之外,我只会强调R的一个可视化和两个图形包(它们不像基本图形,点阵或ggplot那样广泛使用):

    热图

    我非常喜欢可以处理多元数据的可视化,尤其是时间序列数据。 热图对此可能很有用。 大卫史密斯在革命博客上介绍了一篇非常整齐的文章。 这是Hadley的ggplot代码礼貌:

    stock <- "MSFT"
    start.date <- "2006-01-12"
    end.date <- Sys.Date()
    quote <- paste("http://ichart.finance.yahoo.com/table.csv?s=",
                    stock, "&a=", substr(start.date,6,7),
                    "&b=", substr(start.date, 9, 10),
                    "&c=", substr(start.date, 1,4), 
                    "&d=", substr(end.date,6,7),
                    "&e=", substr(end.date, 9, 10),
                    "&f=", substr(end.date, 1,4),
                    "&g=d&ignore=.csv", sep="")    
    stock.data <- read.csv(quote, as.is=TRUE)
    stock.data <- transform(stock.data,
      week = as.POSIXlt(Date)$yday %/% 7 + 1,
      wday = as.POSIXlt(Date)$wday,
      year = as.POSIXlt(Date)$year + 1900)
    
    library(ggplot2)
    ggplot(stock.data, aes(week, wday, fill = Adj.Close)) + 
      geom_tile(colour = "white") + 
      scale_fill_gradientn(colours = c("#D61818","#FFAE63","#FFFFBD","#B5E384")) + 
      facet_wrap(~ year, ncol = 1)
    

    最终看起来有点像这样:

    替代文字

    RGL:交互式3D图形

    另一个非常值得学习的软件包是RGL ,它很容易提供创建交互式3D图形的能力。 网上有很多例子(包括在rgl文档中)。

    R-Wiki有一个很好的例子,说明如何使用rgl绘制三维散点图。

    GGobi

    另一个值得了解的软件包是rggobi。 有关于此主题的Springer书以及大量在线文档/示例,包括“查看数据”课程。


    使用极坐标的绘图当然没有得到充分利用 - 有些人会说很有道理。 我认为有理由使用它们的情况并不常见, 我还认为,当出现这些情况时,极地地块可以揭示线性地块不能做到的数据模式。

    我认为这是因为有时候你的数据本质上是极性的而不是线性的 - 例如它是周期性的(x坐标代表多天的24小时内的时间),或者数据先前映射到极性特征空间。

    这是一个例子。 此图显示了网站按小时的平均流量。 请注意下午10点和凌晨1点的两个尖峰。 对于本网站的网络工程师来说, 它们彼此靠近(相隔两个小时)也很重要。 但是如果你在传统的坐标系统上绘制相同的数据,这种模式将被完全隐藏 - 线性绘制,这两个尖峰将相隔20小时,尽管它们在连续的日子里也相隔两个小时。 上面的极坐标图以简洁直观的方式显示了这一点(不需要图例)。

    显示网站流量的极坐标图,在1时和22时高峰

    有两种方式(我知道)使用R创建这样的图(我创建了w / R上面的图)。 一种是在基本或网格图形系统中编写自己的功能。 换句话说,更容易的是使用圆形包装 。 您将使用的功能是' rose.diag ':

    data = c(35, 78, 34, 25, 21, 17, 22, 19, 25, 18, 25, 21, 16, 20, 26, 
                     19, 24, 18, 23, 25, 24, 25, 71, 27)
    three_palettes = c(brewer.pal(12, "Set3"), brewer.pal(8, "Accent"), 
                       brewer.pal(9, "Set1"))
    rose.diag(data, bins=24, main="Daily Site Traffic by Hour", col=three_palettes)
    

    我非常喜欢dotplots,当我向其他人推荐适合的数据问题时,他们总是感到惊讶和高兴。 他们似乎没有太大的用处,我不明白为什么。

    这里有一个来自Quick-R的例子: 关于汽车数据的dotplot

    我相信克利夫兰对这些的发展和颁布负有最大的责任,他的书中的例子(其中错误的数据很容易通过点阵来检测)对于它们的使用来说是一个有力的论据。 请注意,上面的示例仅在每行放置一个点,而它们的实际功率随附在每行上有多个点,并且有一个图例说明哪个是哪个点。 例如,您可以在三个不同的时间点使用不同的符号或颜色,从而轻松获得不同类别的时间模式感。

    在下面的例子中(在Excel中完成所有事情!),您可以清楚地看到哪些类别可能遭遇标签交换。

    链接地址: http://www.djcxy.com/p/4237.html

    上一篇: Most underused data visualization

    下一篇: How to join (merge) data frames (inner, outer, left, right)?