直方图和散点图都是伟大的方法的数据可视化和变量之间的关系,但最近我一直想知道关于什么可视化技术,我丢失了。你认为什么是最充分利用类型的阴谋?

答案应该:

  1. 不是非常常用在 实践。
  2. 是可以理解的,没有很大 的背景讨论。
  3. 可以适用于许多常见的情况。
  4. 包括可重复代码的创造 一个例子(最R)。一个链接的图像将会 好的。
有帮助吗?

解决方案

我真的同意与其他的海报: Tufte的书很棒 值得一读。

第一,我要指你 一个非常好的教程ggplot2和ggobi 从"数据"今年早些时候。之外,我只想强调一个可视化R,和两个图形包裹(这是不是作为广泛的应用为基础图形、格,或ggplot):

热图

我真的很喜欢可视化,可以处理多元数据,尤其是时间序列数据。 热图 可能是有用的。一个非常整洁一个通过 大卫*史密斯上的革命博客.这里是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)

这结束了看起来有些像这样:

alt text

RGL:交互式的3D图像

另一个包是值得努力去学习 RGL, ,这很容易地提供了能力创建互动式的3D图形。有许多例子网络为这个(包括在rgl文件).

R-Wiki有一个很好的例子 如何情节的3D散点图利用rgl.

GGobi

另一个包是值得了解的是 rggobi.那里是 一Springer本书的主题, 和很多伟大文/实例的网上,包括在 "数据" 课程。

其他提示

我真的很喜欢 并找到的时候我推荐其他人对于适当数据的问题,他们总是惊讶和高兴。他们似乎并没有得到太多的使用,并且我不知道为什么。

这里有一个例子,来自快速-R:dotplot on car data

我相信克里夫兰是负最大责任的发展和颁布这些,例如在他的书(其错误的数据是很容易检测有点图)是一个有力的论据供其使用。注意,上面的例子仅把一点每线,而他们真正的力量来与你有多点在每一行,用一个传奇的解释。例如,可以使用不同的符号或颜色为三个不同的时间点,并从那里容易地获得一意义上的时间模式在不同的类别。

在下面的示例(在Excel的所有东西!), 你可以清楚地看到哪些类别可能遭受的标签交换。

Dotplot with 2 groups

地使用极坐标当然是未被充分利用--有些人会说有很好的理由。我认为局势证明他们的使用不是常见的;我还认为,当这些情况的出现,极地地块可以揭示模式在数据的线性图。

我认为这是因为有时候你的数据 固有的 极性,而不是线性的--例如,它是周期性(x坐标表示的时间在24小时一天的天数),或者数据以前映射到北极的特征的空间。

这是一个例子。这个图显示了一个网站,意味着交通量小时。注意两个峰值在10点至凌晨1点。对该网站的网络工程师,这些都是显着的;这也是显着的,他们附近发生的每一个其他的其他(只是 两个 小时的间隔).但是如果你的情节相同的数据在传统的协调系统,这种模式将是完全隐蔽的--绘制线,这两个尖峰会 20 小时的间隔,这是他们,虽然他们还只是两个小时,除了在连续两天。北极上面的图表显示了这一简单和直观的方式(一个传说是不必要的)。

Polar chart showing site traffic, with peaks at hours 1 and 22

有两种方式(就我所知道的)创建图像这样使用的R(I创建该地块上述w/R)。一个是代码你自己的功能在基本或图形网格系统。他们其他方式,这是更加容易,是使用 圆形的包.该功能将使用的是'玫瑰。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)

如果你的散布图有这么多点就变得一塌糊涂,尝试滑散点图。这里是一个例子:

library(mlbench) ## this package has a smiley function
n <- 1e5 ## number of points
p <- mlbench.smiley(n,sd1 = 0.4, sd2 = 0.4) ## make a smiley :-)
x <- p$x[,1]; y <- p$x[,2]
par(mfrow = c(1,2)) ## plot side by side
plot(x,y) ## left plot, regular scatter plot
smoothScatter(x,y) ## right plot, smoothed scatter plot

hexbin 包(建议通过@德克Eddelbuettel)用于同样的目的,但是 smoothScatter() 具有的优点是,它属于 graphics 包,因此部分的标准R安装。

Smiley as a regular or smoothed scatter plot

关于迷你和其他Tufte的想法, YaleToolkit 包装上 CRAN 提供的功能 sparklinesparklines.

另一个包是用于较大的数据集是 hexbin 因为它巧妙地'箱'的数据纳入水桶处理的数据集可能太大用于天真的散点图。

小提琴地块 (结合箱图与核密度)相对的异国情调和很酷。的 vioplot 包R允许你让他们很容易。

这里有一个例子(维基百科的链接也显示了一个例):

enter image description here

另一个很好的时间可视化系列,我只是审查是 "凸点图" (作为特色 这个职位上的"学习R"博客).这是非常有用的可视化变化中的位置随着时间的推移。

你可以读取有关如何创建它 http://learnr.wordpress.com/, 但这是什么它结束了看上去就像:

alt text

我也喜欢Tufte的修改箱线图让你做的小型比较容易得多,因为他们是非常"薄的"水平,并不要弄乱的情节有多余的墨水。然而,它的工作最好有一个相当大数量的类别;如果你仅有的几个阴谋的定期(图基)箱线图寻找更好的因为他们有更多的分量。

library(lattice)
library(taRifx)
compareplot(~weight | Diet * Time * Chick, 
  data.frame=cw , 
  main = "Chick Weights",
  box.show.mean=FALSE,
  box.show.whiskers=FALSE,
  box.show.box=FALSE
  )

compareplot

其他方式使这些(包括其他种类的Tufte箱线图)是 讨论这个问题.

地平线图 (pdf),对于形象化多的时间序列的一次。

平行的坐标地块 (pdf),对于多元分析。

协会马赛克 图,形象化的应急计表(见 vcd 包)

我们不应该忘记可爱的和(历史上)重要的干叶图(即Tufte爱也是!)。你会得到一个直接的数字的概述你的数据密度和形状(当然,如果数据集不是大约200点)。在R,功能 stem 产生您茎叶显示(在工作空间).我更喜欢使用 gstem 从程序包的功能 fmsb 绘制它直接在一个图形设备。下面是一只海狸身体温度的差异(数据应该在你的默认数据集)中的一个干的叶片显示:

  require(fmsb)
  gstem(beaver1$temp)

enter image description here

此外,Tufte的出色工作,我推荐本书由William S.克里夫兰: 数据可视化元素的制图数据.他们不仅是良好的,但是他们都做R,我认为代码是公开的。

箱线图!例从R帮助:

boxplot(count ~ spray, data = InsectSprays, col = "lightgray")

在我看来这是最方便的方式采取快速看一下数据或进行比较分布。更复杂的分布,有的是扩展所谓的 vioplot.

镶嵌图在我看来,以满足所有四项标准提及。例子有,在mosaicplot.

检查出爱德华Tufte的工作,尤其是 这本书

你也可以试着抓住 他的旅行演讲.这是相当良好,并包括一束他的四个书籍。(我发誓我不要他自己的发行的股票!)

顺便说一句,我喜欢他的迷你的数据可视化技术。惊喜!谷歌已经写入它,并把它放在 谷歌的代码

摘要的地块?像提到的在这个页面:

可视化的摘要统计数据和不确定性

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top