如何为 canvasxpress Scatter3D 的图表中的每个 class 保持 colorBy 固定?

How to keep colorBy fixed for each class across charts for canvasxpress Scatter3D?

我如何指定一个固定的 colorBy 以便 class 在图表中是相同的?例如,如果我在一个页面上有两个图表,我想要 setosa 红色、杂色蓝色和 virginica 到绿色,我该如何提前修复?我有多个图表,因此每个图表中的 class 颜色应该相同。

# setosa red / versicolor blue
library(canvasXpress)
y=read.table("cX-irist-dat.txt", header=TRUE, sep="\t", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
z=read.table("cX-irist-var.txt", header=TRUE, sep= "\t", quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)

fn <- data.frame(cbind(y, Species = z), stringsAsFactors=FALSE)
fn1 <- fn[1:90,]     # first dataset
fn2 <- fn[91:150,]   # second dataset shares 1 class with first


x1 <- fn1[,1:3]
x2 <- subset(fn1,select="Species")

canvasXpress(
  data=x1,
  varAnnot=x2,
  axisTickScaleFontFactor=0.5,
  axisTitleScaleFontFactor=0.5,
  colorBy="Species",
  graphType="Scatter3D",
  title="Iris Data Set",
  xAxis=list("Sepal.Length"),
  yAxis=list("Sepal.Width"),
  zAxis=list("Petal.Length")
)

# versicolor red should be blue / virginica blue should be green
x3 <- fn2[,1:3]
x4 <- subset(fn2,select="Species")

canvasXpress(
  data=x3,
  varAnnot=x4,
  axisTickScaleFontFactor=0.5,
  axisTitleScaleFontFactor=0.5,
  colorBy="Species",
  graphType="Scatter3D",
  title="Iris Data Set",
  xAxis=list("Sepal.Length"),
  yAxis=list("Sepal.Width"),
  zAxis=list("Petal.Length")
)

我无法添加标签 canvasxpress,但可能应该添加 - 很棒的库,谢谢!

只需将 colorKey 参数添加到您的配置中,如下所示:

colorKey = list("Species"=list("setosa"="gold","versicolor"="silver","virginica"="red"))

然后调用:

canvasXpress(
  data=x3,
  varAnnot=x4,
  axisTickScaleFontFactor=0.5,
  axisTitleScaleFontFactor=0.5,
  colorBy="Species",
  graphType="Scatter3D",
  title="Iris Data Set",
  xAxis=list("Sepal.Length"),
  yAxis=list("Sepal.Width"),
  zAxis=list("Petal.Length"),
  colorKey=colorKey
)