2017-06-27 9 views
0

さまざまな理由から、軸のラベルを自分で指定する必要がある図を作成します。しかし、ラベルを指定すると(あるものは1桁、2桁のものもあります)、Rは2桁ごとのラベルをすべて表示する余裕がないと判断して1桁のラベルをすべて残します軸は片側に見える。Rベースのグラフィックスでx軸のラベルを一貫してスキップする(またはスキップしない)方法

ラベルをスキップする必要があるかどうかに基づいて、軸全体でラベルを一貫して抑制する方法はありますか?注:私はさまざまなスケールのプロットをたくさん持っているので、すべてのプロットですべてのラベルをレンダリングしたり、すべてのプロットで1つおきのラベルをスキップしたりすることは望ましくありません。いくつかのプロットではラベルを抑制し、他のプロットではラベルを抑制することが望ましいでしょう。 Rが特定のプロットのために選択したものであれば、一貫してすべてのラベルをスキップしたいだけです。

(ここで私が何を意味するかの例figureがある私がしたいことも、X軸方向に抑制することが「6%」のラベルのためである。。) 例コード:

library(labeling) 

df <- data.frame("estimate" = c(9.81, 14.29, 12.94), 
      "lower" = c(4.54, 6.25, 5.12), 
      "upper" = c(12.85, 20.12, 15.84)) 
ticks <- extended(min(df$lower), max(df$upper), m = 5, only.loose = TRUE, 
       Q=c(2, 5, 10)) 

png("examplePlot.png", width = 1200, height = 900, pointsize = 10, res = 300) 
bars <- barplot(df$estimate, horiz = TRUE, col = "white", border = NA, 
      xlim = c(min(ticks), max(ticks)), xaxt = "n", main = "Example") 
arrows(df$lower, bars, df$upper, bars, code = 3, angle = 90, length = 0.03) 
points(df$estimate, bars, pch = 20) 

tickLabels <- paste(ticks, "%", sep = "") 
axis(1, at=ticks, labels = tickLabels, cex.axis=1) 
axis(2, at = bars, labels = c("c", "b", "a"), lwd = 0, las = 2) 
dev.off() 

答えて

0

これが依存プロットの大きさは、あなたが個別に各ラベルをプロットする必要があります:私はすべてのプロット番目に他のすべてのラベルをスキップ_always_したくない

axis(1, lwd.ticks = 1, labels = FALSE, at = ticks) # plot line and ticks 
i <- seq(1,length(ticks),2) # which labels to plot 
for(ii in i) 
    axis(1, at = ticks[ii], labels = tickLabels[ii], cex.axis = 1, lwd = 0) 

enter image description here

+0

私が望んでいたことは、何かのラベルをそのプロットのためにスキップする必要があるかどうかに基づいて、一貫してスキップするかスキップしないかということでした。 (例えば、とにかく5つのラベルがあらかじめ用意されているプロットがあるので、1つおきにスキップすると、ラベルは10%、50%、90%などで終わるでしょう)。私はそれに応じて質問を編集しました。 – user3757897

関連する問題