2016-12-30 12 views
3

Rに渦を描くにはどうすればよいですか?私は数字のリストをプロットしようとしています。1:100 そしてすべての7番目の数字は、それに因子 '1'を割り当てます。他のすべてはちょうど '0'です。私はまた、TRUEまたはFALSEのベクトルを持っています。どのようにこれらの数字の渦をプロットし、7番目の数字をハイライト表示するのですか? 7番目の数字を整列させるために渦巻き(シータ)を締めるか緩めることができるかどうかを試してみてください。データの作成に使用した次のコード。私は2つの異なる機能を使って、どのベクターが最もうまく機能するかを確認しました。論理ベクトルまたは "1"または "0"のベクトル。 https://en.wikipedia.org/wiki/Archimedean_spiralからggplot2で整数値を使用してアルキメデススパイラルをプロットする

returnint <- function(x) { 
if (x == TRUE) { 
     return (1) 
    } else { 
     return (0) 
    } 
} 

isseven <- function(x) { 
if (x %% 7) { 
     return (0) # FALSE 
    } else { 
     return (1) # TRUE 
    } 
} 

fo = seq(1, 100) 
fo.sev = NULL # factors 
fo.int = NULL # as int 0 = FALSE , 1 = TRUE 

for (i in 1:length(fo)) { 
    fo.sev[i] = as.logical(isseven(i)) 
    fo.int[i] = returnint(fo.sev[i]) 
} 


df <- data.frame(fo,fo.int,as.factor(fo.sev)) 
names(df) <- c("x","intx","seven") 
df 
+0

私は極座標を使用してプロットすることができます次のとおりです – user2038042

+0

[コードリンク](http://pastebin.com/f2rsmJ0Q) – user2038042

+0

式はこちら[リンク] http://www.mathematische-basteleien.de/spiral22.gif)これらすべての小さなビットについてはごめんなさい、元の投稿を編集することはできません – user2038042

答えて

2

、アルキメデススパイラルの極性方程式は、実数aとbのと、r=a+b*thetaです。以下のコードは、1つを描画するために使用することができます。

# for some fixed real a, b 
a <- 2 
b <- 3 
theta <- seq(0,10*pi,0.01) 
r <- a + b*theta 
df <- data.frame(x=r*cos(theta), y=r*sin(theta)) # Cartesian coords 
library(ggplot2) 
ggplot(df, aes(x,y)) + geom_point(col='red') 

enter image description here

3

私は、後に取ったが、(私は、タイトル内の要求に答えることを認めるが、あなたのテキストの残りの部分は、要求されたものを理解していません推測)ただ、パラメトリック方程式のペアでデータを設定します。

x = t*cos(t); y = t*sin(t) 

あなたが細かく十分tをインスタンス化する必要があります...あなたの目的は、滑らかな曲線である場合:

t <- seq(0, 10, by=0.01) 
x = t*cos(t); y = t*sin(t) 
ggplot(data.frame(x,y), aes(x=x,y=y))+geom_path() 

enter image description here

これは、整数をプロットするために要求されたもので、推測です。

png() 
    print(ggplot(df, aes(x=x*cos(x), y=x*sin(x))) + 
      geom_label(data=df, aes(label=x, color=intx, size=intx + 1)) + 
      coord_equal()) 
    dev.off() 

enter image description here

彼らのsizeがゼロであった場合でも見え登場以来、ラベルボックスは、最小サイズを持っていたように見えました。そして、私は小さな "ラベルボックス"を持っていたlabel.padding = unit(0.05, "lines")

+0

正確に私が探しているもの - ありがとう、本当に詳細を細かくプロットしたいので、これを100にするか、OpenGLでピクセル化することができるかどうかを確認しなければならない。今は可能だと分かっている – user2038042

+0

チェックマークを付ける必要があります。 –

関連する問題