【问题标题】:R scatter plot with hexadecimal colors具有十六进制颜色的 R 散点图
【发布时间】:2012-05-01 14:01:30
【问题描述】:

我有一个 CSV 文件,其中包含 3 列、X 值、Y 值及其对应的十六进制 (#RRGGBB) 值。我一直在尝试创建一个散点图/气泡图,其中气泡的内部根据十六进制值着色。

symbols(year, logtrans, circles=size, inches=0.05, bg=intel2$HexLogClock)

intel2$HexLogClock 包含十六进制值。

再次抱歉这个菜鸟问题,感谢任何帮助。

【问题讨论】:

  • 您遇到错误了吗?还是意想不到的结果?
  • 颜色看起来很随意。我自己写了从#FF0000(红色)到#FFFF00(黄色)的颜色,出现的颜色遍布图表。使用热调色板可能更容易,但我不知道如何根据第三个变量来挑选颜色。
  • 听起来可能根本没有问题。您的颜色值可能已排序,但您的年份和/或 logtrans 值可能根本没有排序。所以这些点可能真的是一团乱七八糟的颜色。

标签: r colors hex factors


【解决方案1】:

我想我理解错了,如果是这样,请告诉我,但您可以将十六进制值提供给 col,如下所示:

barplot(1:3, axes=FALSE, col=c("#330000", "#FFFFCC", "660000"))

【讨论】:

  • 您将如何使用我尝试传递的参数来执行此操作?我对 R 真的很陌生,并不完全理解 col 参数。文档不是很清楚。但是,是的,颜色以该格式存储在与 x 和 y 参数大小相同的向量中。
【解决方案2】:

我认为您的问题可能在于十六进制值不是字符。确保他们是第一位的。请参见下面的示例:

year <- 1:5
logtrans <- log(year)
size <- rep(15,5)
intel2 <- data.frame(HexLogClock=c("#330000", "#FFFFCC", "#660000", "#FF0000", "#00FF00"),stringsAsFactors=FALSE)
symbols(year, logtrans, circles=size, inches=0.05, bg=intel2$HexLogClock)

注意stringsAsFactors=FALSE 代码,您可以为read.csv 和其他导入方法指定该代码,以确保您的字符数据不会转换为因子。

您可以使用以下方法对您的数据执行此操作:

intel2$HexLogClock <- as.character(intel2$HexLogClock)

【讨论】:

  • 我相信你必须为杰夫的侦探工作+1和+1问题。
  • @TylerRinker 我相信这是正确的,并且已经这样做了。 :-)
【解决方案3】:

我想intel2$HexLogClock 存储为factor。通过class(intel2$HexLogClock) 确认这一点。在这种情况下,因子的每个级别由一个整数表示(根据因子级别第一次出现的顺序分配),因此您的第一个 HexLogClock 颜色将是黑色(1=黑色),然后是红色,然后是绿色、蓝色、青色等。

要纠正这个问题,您需要将intel2$HexLogClock 转换为字符向量,因此:

intel2$HexLogClock <- as.character(intel2$HexLogClock)

之后,您的命令应该按预期工作。

或者:

symbols(year, logtrans, circles=size, inches=0.05, 
        bg=as.character(intel2$HexLogClock))

【讨论】:

  • +1 获取对未来搜索者有用的更多信息!
猜你喜欢
  • 2017-10-01
  • 2015-10-07
  • 2022-01-04
  • 2014-07-03
  • 2019-06-16
  • 2021-03-08
  • 2019-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多