【问题标题】:Color mismatch using rgl使用 rgl 进行颜色不匹配
【发布时间】:2013-03-12 23:36:21
【问题描述】:

我正在使用 rgl 从导入的 .csv 数据集创建点散点图。我希望点的颜色在数据集中设置。一切正常,除了显示散点图时点的颜色与数据中定义的颜色不匹配。例如,所有被指定为“蓝色”的点实际上可能是绿色的,而所有被指定为“黄色”的点实际上可能显示为红色。

data=read.csv("ExpLayout.csv", header = TRUE)
x=data$x
y=data$y
z=data$z
color=data$color
plot3d(x=x, y=y, z=z, type="s", col=color)

【问题讨论】:

  • 尝试使用read.csv(filename, header=TRUE, stringsAsFactors=FALSE) 读取您的数据,然后返回报告。
  • 如果 Marius 的建议不起作用,请尝试通过 dput( head( data ) ) 粘贴一些数据
  • @user2163189:您可能会看到颜色名称显示为"red",但这并不意味着color 实际上是character 向量而不是factor。跨度>

标签: r rgl


【解决方案1】:

这几乎可以肯定是由于read.csv 将字符串转换为因子

查看这个可重现示例的不同之处

library(rgl)
x<-1:5
y=1:5
z <- 1:5
colors <- c('red','green','blue','orange','purple')
plot3d(x=x,y=y,z=z,col=colors, type = 's')
colorsf <- factor(c('red','green','blue','orange','purple'))
plot3d(x=x,y=y,z=z,col=colorsf, type = 's')

因此,要么使用 stringsAsFactors=FALSEcolor 作为字符列读入,要么使用 as.character()levels(colors)[colors] 强制转换为字符

【讨论】:

  • 做到了!我已经将颜色放入“”中的数据集中,假设允许它们被视为字符串,但显然这并没有完全消除它。谢谢 mnel 和@Marius!
  • 这很有帮助,谢谢。我已经使用 R 一段时间了,但我仍然被这样的事情绊倒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 2013-01-03
相关资源
最近更新 更多