交易数据的 3d 散点图

3dscatter plot for trading data

我正在尝试使用 trade.sqlite3 数据库的 tables 退出一段时间。我想出了一个组合 table 的导入和导出 table。

A csv-file of the table can be downloaded here :

Added a virus scan of the file as well

table 的

str 了解它的外观:

Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 300 obs. of 4 variables:
$ year : num 2002 2002 2002 2002 2002 ...
$ category: Factor w/ 10 levels "0--Food And Live Animals",..: 1 2 3 4 5 6 7 8 9 10 ...
$ value : num 4.94e+08 2.88e+08 9.40e+08 4.96e+07 7.76e+06 ...
$ type : Factor w/ 2 levels "Exp","Imp": 1 1 1 1 1 1 1 1 1 1 ...

现在我想使用 plot_ly 绘制此 table。

我想出了以下想法:

library(plotly)
total_val <- read.csv("Total_Value")
plot_ly(data = total_val, x = total_val$year, 
y = total_val$value, z = total_val$category, color = total_val$category, 
stroke = total_val$category, type = "scatter3d" )

我仍然遇到一些问题:
- 我想指出标记是导入还是导出类型。
- 像我一样使用颜色代码会产生以下警告:

n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors

有10个类别,我需要全部显示出来。除了颜色编码,还有更好的方法吗?

强烈推荐任何其他使情节更具信息性的意见。

this 之后,我想出了一个解决方案来绘制不同形状的 Imp 和 Exp。颜色问题就像使用 colors 参数指定颜色一样简单。

total_val$markers <- ifelse(total_val$type == "Exp", "circle", "diamond")
library(plotly)
p <- plot_ly(data = total_val, x = ~year, 
        y = ~value, z = ~category, color = ~category,
        colors = rainbow(length(levels(total_val$category))),
        text = ~paste('category:', category, '<br>value:', value, '<br>year:', year,
                      '<br>type:', type)) %>%
  add_markers() %>%
  layout(scene = list(xaxis = list(title = 'year'),
                      yaxis = list(title = 'Value'),
                      zaxis = list(title = 'Category')))

p <- plotly_build(p)

for (i in 1:length(p$x$data)) {
  values <- total_val$markers[total_val$category == levels(total_val$category)[i]]
  p$x$data[[i]]$marker$symbol <- values
}
p

希望对您有所帮助!