我有一些JSON格式的数据,我想做一些可视化.数据(大约10MB的JSON)加载速度非常快,但是将其重新整形为可用的形式需要几分钟,而不到100,000行.我有一些有用的东西,但我认为它可以做得更好.
从我的示例数据开始可能最容易理解.
假设您在以下命令中运行以下命令/tmp:
curl http://public.west.spy.net/so/time-series.json.gz \
| gzip -dc - > time-series.json
Run Code Online (Sandbox Code Playgroud)
你应该能够在这里看到我想要的输出(一段时间后):
require(rjson)
trades <- fromJSON(file="/tmp/time-series.json")$rows
data <- do.call(rbind,
lapply(trades,
function(row)
data.frame(date=strptime(unlist(row$key)[2], "%FT%X"),
price=unlist(row$value)[1],
volume=unlist(row$value)[2])))
someColors <- colorRampPalette(c("#000099", "blue", "orange", "red"),
space="Lab")
smoothScatter(data, colramp=someColors, xaxt="n")
days <- seq(min(data$date), max(data$date), by = 'month')
smoothScatter(data, colramp=someColors, xaxt="n")
axis(1, at=days,
labels=strftime(days, "%F"),
tick=FALSE)
Run Code Online (Sandbox Code Playgroud) 我已经找到了将向量应用于我认为采用单个值的函数的魔力,但这似乎发生在我无法理解的区域中,这导致我遇到的奇怪行为.
例如,我有这个时间格式化功能:
timeFmt <- function(s) {
sizes <- c('µs', 'ms', 's')
e <- floor(log(s, 1000))
suffix <- sizes[e+1]
prefix <- sprintf("%g", s/(1000 ^ floor(e)))
paste(prefix, suffix, sep="")
}
Run Code Online (Sandbox Code Playgroud)
它有两个问题:
所以,它有这个好的行为:
> timeFmt(10 ** (0:8))
[1] "1µs" "10µs" "100µs" "1ms" "10ms" "100ms" "1s" "10s" "100s"
Run Code Online (Sandbox Code Playgroud)
......但这种令人讨厌的行为:
> tf(c(0, 1, 10, 100, 1000, 1e9))
[1] "NaNNA" "1µs" "10µs" "100µs" "1ms" "1NA"
Run Code Online (Sandbox Code Playgroud)
如何让我的函数为0返回"0",并使用"s"后缀为更大的值?做一个"if"语句和min的明显事情是行不通的,因为它们对传入的整个向量进行操作.
我是memcached和sharding的新手.
我去过两篇文章.我需要在我的应用程序中实现它们.
我经历的文章很好,但没有一个给我如何使用这些技术.
任何人都可以向我建议我可以实际配置它们并运行样本的链接.
我想首先实现memcached,然后分片,然后将它们两者结合在一起.
谢谢你的帮助.
我有一个5x7矩阵我想绘制为雷达或蜘蛛图?例如:
stars(mtcars[, 1:7], locations = c(0,0), radius = FALSE,
key.loc=c(0,0), main="Motor Trend Cars", lty = 2)
Run Code Online (Sandbox Code Playgroud)

我希望每一行都是不同的颜色(和/或不同的风格),这样我就可以看出我正在看的东西.