1

タイトルが非常に簡単に聞こえることはわかっていますが、データをグラフ化する For ループがあります。値が変化すると、X 軸の範囲も変化します (プロットごとに開始と終了が異なります)。ただし、同様のすべてのプロットで同じままである定義済みの X 軸範囲が必要です。これは、必要な X の範囲が最大 40 あるという事実によって複雑になります。

プロットごとに、選択したい x-lims のデータ フレームがあります。基本的には次のようになります。

   Trait  start    end
    A     123456   134567
    B     234546   245678
    C     234546   245678
    D     345678   356789

等々。したがって、1 つのループで特性 C、開始 = 235000、終了 = 240000 という値が得られた場合、デフォルト X リムの 3 番目のセットを自動的に使用したいと考えています。

編集:詳細情報を追加しました(特性)。

4

2 に答える 2

2

この問題を完全にフォローしているかどうかはわかりません。私の理解が正しければ、各プロットの範囲が 11111 であることを確認したいのですが (この例ではとにかく)、上限値と下限値は大きく異なります。したがって、現在、必要なすべての可能な上限と下限のテーブルを作成する方法を探しており、プロットするときにそれらを調べたいと考えています。

プロット ステートメントを記述して、最小値と最大値が常に 11111 離れていることを確認するだけで、はるかに簡単に実行できることを提案します。

1 回のループ反復中に start <- 235000、end <- 240000、および trait <- B を取得したとします。このようにコードを構成できますか?

diff <- end-start
gap <- 11111-diff
plot(thing_you_plot,xlim(start-(gap/2),end+(gap/2))

数字で:

diff <- 240000-235000 (5000)
gap <- 11111-5000 (6111)
plot(thing_you_plot,xlim(235000-(6111/2),240000+(6111/2)) 

(x limits are: 231944.5,243055.5, making the plot 11111 in length)

明らかに、必要に応じて、floor 関数と Ceiling 関数を使用して、小数ではなく四捨五入することもできます。あなたの質問からは、「特性」が次元に実際にどのように影響するかは明らかではありません。同じ次元を使用してプロットされた 2 つの特性 (B と C) を使用できる場合、なぜテーブルが必要なのですか? 単純な関数を使用して各プロットに対してそれを行うだけで、はるかにうまくいくと思います。

リビジョンに基づいて編集:

ジョシュは私を打ち負かしましたが、私はほとんどすべてをタイプしたので、ここで再びです。

df <- data.frame(trait=c("A","B","C","D"),
                 start=c(123456,234546,234546,345678),
                 end=c(134567,245678,245678,356789))

trait <- "C"
start <- 235000
end <- 240000

xmin <- df[which(start > df$start & end < df$end & trait == df$trait),2]
xmax <- df[which(start > df$start & end < df$end & trait == df$trait),3]
于 2012-06-25T16:03:19.323 に答える