ggplot 2 - 赛道图错误

时间:2011-07-27 08:57:21

标签: r ggplot2

我试图在我自己的数据上重现ggplot2(http://had.co.nz/ggplot2/coord_polar.html)的Race轨道图。

> y[1:10,]
         cd cnt day year
1  2003-10-18   3 291 2003
2  2003-10-20   1 293 2003
3  2003-10-21   1 294 2003
4  2003-10-22   1 295 2003
5  2003-10-23   2 296 2003
6  2003-11-03   1 307 2003
7  2003-11-18   3 322 2003
8  2003-11-20   2 324 2003
9  2003-11-21   6 325 2003
10 2003-11-24   1 328 2003
> q <- ggplot(y, aes(y$day, y$year, fill=y$cnt)) + geom_bar(width = 0.9, position = "fill") + coord_polar(theta="x")
> q
stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.
Error in as.Date.numeric(value) : 'origin' must be supplied
In addition: Warning message:
In cbind(is.na(mmm), is.na(each)) :
  number of rows of result is not a multiple of vector length (arg 2)

但我收到此错误,我找不到任何解决方法。 “起源”在哪里?有人能帮我一把吗?谢谢大家。

这里是str(y)的输出:

'data.frame':   2430 obs. of  4 variables:
 $ cd  :Class 'Date'  num [1:2430] 12343 12345 12346 12347 12348 ...
 $ cnt : int  3 1 1 1 2 1 3 2 6 1 ...
 $ day : num  291 293 294 295 296 307 322 324 325 328 ...
 $ year: num  2003 2003 2003 2003 2003 ...

1 个答案:

答案 0 :(得分:0)

正如安德里所说,你的错误是不可重现的;也就是说,考虑到10个样本数据点,它似乎在其他人的机器上运行良好。如果我使用稍微不同的代码,我可以重现它,如下所示。

y <- read.table(tc <- textConnection("
cd cnt day year
2003-10-18   3 291 2003
2003-10-20   1 293 2003
2003-10-21   1 294 2003
2003-10-22   1 295 2003
2003-10-23   2 296 2003
2003-11-03   1 307 2003
2003-11-18   3 322 2003
2003-11-20   2 324 2003
2003-11-21   6 325 2003
2003-11-24   1 328 2003"), header = TRUE); close(tc)
y$cd <- as.Date(y$cd, format = "%Y-%m-%d")

q <- ggplot(y, aes(y$day, y$cd, fill=y$cnt)) + geom_bar(width = 0.9, position = "fill") + coord_polar(theta="x")
q

你真的在你的情节中包含cd作为美学吗?


一些小的风格点:

您无需为y$调用中的每个变量名称声明aes()ggplot非常聪明,可以查看您在第一个参数中提供的数据框。

最好不要调用变量q,因为这已经是一个函数名。