この質問は、私がここで尋ねた質問に関連しています。データフレームの列で指定された色で散布図の個々の点に色を付けようとしています。データはタブ区切りファイルからのものであり、次のようになります。
> dput(ztestHSV)
structure(list(y = c(0, -1, -1, -2), x = c(0, 2, 0, -2), group = c("m",
"m", "m", "s"), colorHSV = c("0.02,0.83,0.89", "0.59,0.59,0.85",
"0.25,0.45,0.8", "0.55,0.41,0.8"), colorText = c("red", "blue",
"green", "turquoise")), .Names = c("y", "x", "group", "colorHSV",
"colorText"), class = "data.frame", row.names = c(NA, -4L))
すなわち
y x group colorHSV colorText
1 0 0 m 0.02,0.83,0.89 red
2 -1 2 m 0.59,0.59,0.85 blue
3 -1 0 m 0.25,0.45,0.8 green
4 -2 -2 s 0.55,0.41,0.8 turquoise
次のコードは、Rで使用可能な事前定義された色のセットに対して適切に機能します。
ztestHSV=read.table(file="testHSV.txt",sep="\t",header=TRUE,
colClasses=c("numeric","numeric","character","character","character"))
plot(ztestHSV[ztestHSV$group=='m',]$x,ztestHSV[ztestHSV$group=='m',]$y,type='n')
points(ztestHSV[ztestHSV$group=='m',]$x,ztestHSV[ztestHSV$group=='m',]$y,
pch=23,cex=1.5,
bg=ztestHSV[ztestHSV$group=='m',]$colorText
)
私が本当にやりたいのはhsv()
、色を指定するために使用することです。bg
しかし、それを機能させるための正しいコマンドを理解することはできません。私はいくつかのことを試し、それらを関連する結果とともに以下にリストしました。
1
bg=hsv(as.numeric(ztestHSV$colorHSV))
Error in hsv(as.numeric(ztestHSV$colorHSV)) :
bad hsv to rgb color conversion
In addition: Warning message:
In hsv(as.numeric(ztestHSV$colorHSV)) : NAs introduced by coercion
2
bg=hsv(as.numeric(strsplit(ztestHSV$colorHSV,",")))
Error in hsv(as.numeric(strsplit(ztestHSV$colorHSV, ","))) :
(list) object cannot be coerced to type 'double'
3
bg=hsv(unlist(strsplit(ztestHSV$colorHSV,",")))
上記は実行されますが、間違った背景色を使用しています
4
bg=hsv(as.numeric(unlist(strsplit(ztestHSV$colorHSV,","))))
上記はエラーを生成しませんが、背景色を塗りつぶしません
これはcolorHSVの文字列をhsv()
使用できるものに変換する際の問題のようですが、その方法がわかりません。どんな助けでも素晴らしいでしょう。