2016-09-23 8 views
0

私は2つのデータリストを持っています。plotrixパッケージradial.plotを使用してラジアルプロット内の個々の点に色を指定

a = c(0, 14400, 15000, 1600) 
b = c(0, 1.1, 2.3, 4.5) 

ラジアルプロットを使用して極座標(ラジアル)を使用してグラフをプロットしたいと思います。 r = thetaが必要なので、rとthetaの座標の値はリスト "a"にあります。

ポイントの色については、条件を使用して各ポイントの色を指定するリスト "b"を使用します。 例: bのelemntの値が1より小さい場合、その要素の色は黒です。 bの要素の値が1〜2の場合、色は緑色になります。 bの要素の値が3より大きい場合、色は赤です。

だから、結果のリストは次のようになります。

c = c("black", "green", "red", "red") 

最後のステップは、要素を着色するリスト「c」を使用することです。 私の質問への答えは2つのステップが必要です: 1)bの値に基づいて色名のリストを持つ新しいリスト "c"を作成します。 2)ラジアルプロットのリストcを使用して、 (これが可能かどうかわかりません)

ここまでは私がこれまで持っていたものです。

pp <- radial.plot(a, a, start = -pi/3, rp.type = "s", clockwise = TRUE, point.symbols=19) 
pp 

実際のデータははるかに大きいですが、私は私が解決する必要がある2つの問題に焦点を当てるだけの小さなサンプルコードを提供しています。 私はggplot2を使ってこのプロットを生成することができました。しかし、私は、他の理由のために、これにplotrixパッケージのradial.plot関数を使うことを好むでしょう(極座標/放射状座標のコードははるかに簡単で使いやすいようです)。

助けてください、私はRが新しくあります。ありがとうございます。

答えて

1

このコードは、必要なプロットの種類を生成するのに十分な柔軟性を備えている必要があります。下の図が生成されます。アングルについては、aの最大値が2 * piに対応するようにスケールしました。これはプロットを螺旋状にします。これは、角度がaの2 * piを法とした値になり、大きな数値ではランダムに表示されることを意味しません。

色の割り当てに関する第2の部分は、論理インデックスに基づいて色を割り当てることによって行うことができます。必要に応じて条件を追加することができます。特定のパターンがなければ、より一般的な色付けを行うのは簡単ではありません。

enter image description here

library(plotrix) 

# given example data 
a = c(0, 14400, 15000, 1600) 
b = c(0, 1.1, 2.3, 4.5) 


# initializing vector of colors as NA 
colors_plot <- rep(NA,length(b)) 

# set of conditions listed in the plot 
colors_plot[b < 1] <- "black" 
colors_plot[intersect(1 < b,b < 2)] <- "green" # need intersect because of double condition 
colors_plot[b > 2] <- "red" 
# add more conditions as needed 

pp <- radial.plot(a, # radial distance 
        a*2*pi/max(a), # scaling so max(a) maps to 2*pi, this avoids the cooridnates wrapping 
        start = -pi/3, # same as code 
        rp.type = "s", 
        clockwise = TRUE, 
        point.symbols=19, 
        point.col=colors_plot, # colors calcualted above 
        radial.labels=NA # not plotting radial axis labels 
       ) 
関連する問題