0

私はこれに似た図を作ろうとしています:

ここに画像の説明を入力

x 軸ではなく y 軸にログ ティックを使用します。次のコードでこれを生成できました。

setwd('/Users/marleyjarvis/Desktop/')
CompMero=read.csv("CompMero.csv")
library(ggplot2)
library(scales) #for the trans and format functions
attach(CompMero)

ggplot(CompMero, aes(x=station, y=Mean)) + 
geom_errorbar(aes(ymin=Mean-StErr, ymax=Mean+StErr), colour="black", width=.1) +
geom_point(size=3) +
xlab("Tow station with respect to foam line and front") +
ylab(expression(paste(Mean~no~per~m^3))) +
theme_bw() +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
) + 
scale_x_continuous(breaks=c(1:3), labels=c("Inshore", "Foam line", "Offshore")) +
annotation_logticks(sides = "l") + #log ticks only on y!!!!
scale_y_log10(breaks = trans_breaks("log10", n=6, function(x) 10^x),
          labels = trans_format("log10", math_format(10^.x)),
          minor_breaks = log10(5) + -1:3) +
coord_fixed()

次の図の出力が得られます。

ここに画像の説明を入力

私の問題: イチジクについて、変更方法を理解できていないことが 2 つあります (ドキュメントや Web などを何時間も検索したにもかかわらず)。

  1. Y 軸の番号付けを指数にしないでください。つまり、y 軸のラベルを「10^2」、「10^3」ではなく、「100」、「1000」などと読みたいと思います。?trans_breaks と ?trans_format を読んで math_format() 構文を検索し、10^.x を変更して実験しましたが、うまくいきませんでした。y 軸の範囲が異なる複数のデータ セットに対してこれらのグラフを作成するので、単純にラベルを「100」「1000」などに変更するのではなく、y データの範囲を反映するようにコードに書きたいと思います。それが理にかなっていることを願っています。

  2. 「中間」の目盛りラベルと外側の目盛りは、内側の中途の目盛りと一致しません。つまり、"10^2" と "10^3" の中間の目盛りと呼んでいる "10^2.5" ラベルには、内側の目盛りと一致しない外側の目盛りがあります。べきであることを示す目盛り。代わりに、この外側の目盛りは物理的に「10^2」と「10^3」の間の半分の距離にあり、内側の目盛りと位置的に正しくありません (外側の目盛りを一致させたい)。R Graphics Cookbook のレシピ 8.15「Adding ticks for a logarithmic axis」を読んで理解したことから、私のコードの minor_breaks = log10(5) + -1:3) 行はこの問題を解決するはずですが、私は何かをしているに違いありません違う。私はそれを理解することができませんでした。別の方法として (そして、最終的な最終製品を公開することが望ましいかもしれません)、これらの中途半端な目盛りとラベルをすべて一緒に削除したいと思います。ただし、上記の方法(途中の目盛りを並べる)も学びたいと思います。

私のサンプルデータ: サンプルデータ:CompMero

編集: サンプル データは名前 = stationID、station、Mean、StErr の列にあります。station
ID: Foam line、Inshore、Offshore station: 2、1、3 Mean: 3419.401、35.56681、70.47807 StErr: 1888.509、11.55935、40.04964

ヘルプやポインタをありがとうございました。ドキュメントやヘルプ ファイルを読んだり、過去の質問を検索したりするのにかなりの時間を費やしましたが、これら 2 つの問題を解決できませんでした。誰かが私を正しい方向に向けることができれば、本当に感謝しています。

4

1 に答える 1

2

他の誰かがこの質問に出くわして利益を得る可能性がある場合に備えて、次のコードを使用して、軸のラベル付けを行い、ずれていた厄介な「途中」の目盛りを取り除きました。

ggplot(df, aes(x=station, y=Mean)) + 
geom_errorbar(aes(ymin=Mean-StErr, ymax=Mean+StErr), colour="black", width=.1) +
geom_point(size=3) +
xlab(NULL) +
ylab(NULL) +
theme_bw() +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
) + 
scale_x_continuous(expand=c(.2,0), breaks=c(1:3), labels=c("IN", "FL", "OFF")) +
annotation_logticks(sides = "l") + #log ticks only on y!!!!
scale_y_log10() +
theme(axis.text.x=element_text(size=16))+
theme(axis.text.y=element_text(size=16))
于 2013-06-12T16:53:35.830 に答える