大多数未充分利用的数据可视化[封闭]
-
21-09-2019 - |
题
直方图和散点图都是伟大的方法的数据可视化和变量之间的关系,但最近我一直想知道关于什么可视化技术,我丢失了。你认为什么是最充分利用类型的阴谋?
答案应该:
- 不是非常常用在 实践。
- 是可以理解的,没有很大 的背景讨论。
- 可以适用于许多常见的情况。
- 包括可重复代码的创造 一个例子(最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)
这结束了看起来有些像这样:
RGL:交互式的3D图像
另一个包是值得努力去学习 RGL, ,这很容易地提供了能力创建互动式的3D图形。有许多例子网络为这个(包括在rgl文件).
R-Wiki有一个很好的例子 如何情节的3D散点图利用rgl.
GGobi
另一个包是值得了解的是 rggobi.那里是 一Springer本书的主题, 和很多伟大文/实例的网上,包括在 "数据" 课程。
其他提示
我真的很喜欢 点 并找到的时候我推荐其他人对于适当数据的问题,他们总是惊讶和高兴。他们似乎并没有得到太多的使用,并且我不知道为什么。
这里有一个例子,来自快速-R:
我相信克里夫兰是负最大责任的发展和颁布这些,例如在他的书(其错误的数据是很容易检测有点图)是一个有力的论据供其使用。注意,上面的例子仅把一点每线,而他们真正的力量来与你有多点在每一行,用一个传奇的解释。例如,可以使用不同的符号或颜色为三个不同的时间点,并从那里容易地获得一意义上的时间模式在不同的类别。
在下面的示例(在Excel的所有东西!), 你可以清楚地看到哪些类别可能遭受的标签交换。
地使用极坐标当然是未被充分利用--有些人会说有很好的理由。我认为局势证明他们的使用不是常见的;我还认为,当这些情况的出现,极地地块可以揭示模式在数据的线性图。
我认为这是因为有时候你的数据 固有的 极性,而不是线性的--例如,它是周期性(x坐标表示的时间在24小时一天的天数),或者数据以前映射到北极的特征的空间。
这是一个例子。这个图显示了一个网站,意味着交通量小时。注意两个峰值在10点至凌晨1点。对该网站的网络工程师,这些都是显着的;这也是显着的,他们附近发生的每一个其他的其他(只是 两个 小时的间隔).但是如果你的情节相同的数据在传统的协调系统,这种模式将是完全隐蔽的--绘制线,这两个尖峰会 20 小时的间隔,这是他们,虽然他们还只是两个小时,除了在连续两天。北极上面的图表显示了这一简单和直观的方式(一个传说是不必要的)。
有两种方式(就我所知道的)创建图像这样使用的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安装。
关于迷你和其他Tufte的想法, YaleToolkit 包装上 CRAN 提供的功能 sparkline
和 sparklines
.
另一个包是用于较大的数据集是 hexbin 因为它巧妙地'箱'的数据纳入水桶处理的数据集可能太大用于天真的散点图。
另一个很好的时间可视化系列,我只是审查是 "凸点图" (作为特色 这个职位上的"学习R"博客).这是非常有用的可视化变化中的位置随着时间的推移。
你可以读取有关如何创建它 http://learnr.wordpress.com/, 但这是什么它结束了看上去就像:
我也喜欢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
)
其他方式使这些(包括其他种类的Tufte箱线图)是 讨论这个问题.
我们不应该忘记可爱的和(历史上)重要的干叶图(即Tufte爱也是!)。你会得到一个直接的数字的概述你的数据密度和形状(当然,如果数据集不是大约200点)。在R,功能 stem
产生您茎叶显示(在工作空间).我更喜欢使用 gstem
从程序包的功能 fmsb 绘制它直接在一个图形设备。下面是一只海狸身体温度的差异(数据应该在你的默认数据集)中的一个干的叶片显示:
require(fmsb)
gstem(beaver1$temp)
此外,Tufte的出色工作,我推荐本书由William S.克里夫兰: 数据可视化 和 元素的制图数据.他们不仅是良好的,但是他们都做R,我认为代码是公开的。
箱线图!例从R帮助:
boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
在我看来这是最方便的方式采取快速看一下数据或进行比较分布。更复杂的分布,有的是扩展所谓的 vioplot
.
镶嵌图在我看来,以满足所有四项标准提及。例子有,在mosaicplot.
摘要的地块?像提到的在这个页面: