Y軸を図のようにパーセントに変更するにはどうすればよいですか? y軸の範囲を変更できますが、パーセントにすることはできません。
つかいます:
+ scale_y_continuous(labels = scales::percent)
または、パーセントの書式設定パラメーターを指定するには:
+ scale_y_continuous(labels = scales::percent_format(accuracy = 1))
(コマンドlabels = percent
はggplot2のバージョン2.2.1から廃止されました)
ggplot2
およびscales
パッケージはそれを行うことができます:
y <- c(12, 20)/100
x <- c(1, 2)
library(ggplot2)
library(scales)
myplot <- qplot(as.factor(x), y, geom="bar")
myplot + scale_y_continuous(labels=percent)
stat()
オプションが無効にされ、エラーメッセージが表示されているようです。これを試して:
library(scales)
myplot <- ggplot(mtcars, aes(factor(cyl))) +
geom_bar(aes(y = (..count..)/sum(..count..))) +
scale_y_continuous(labels=percent)
myplot
原則として、任意の再フォーマット関数をlabels
パラメーターに渡すことができます。
+ scale_y_continuous(labels = function(x) paste0(x*100, "%")) # Multiply by 100 & add %
または
+ scale_y_continuous(labels = function(x) paste0(x, "%")) # Add percent sign
再現可能な例:
library(ggplot2)
df = data.frame(x=seq(0,1,0.1), y=seq(0,1,0.1))
ggplot(df, aes(x,y)) +
geom_point() +
scale_y_continuous(labels = function(x) paste0(x*100, "%"))
上記の@Deenaから借用した、ラベルの関数変更は、思ったよりも多用途です。たとえば、カウントされた変数の分母が140であるggplotがありました。このように彼女の例を使用しました。
scale_y_continuous(labels = function(x) paste0(round(x/140*100,1), "%"), breaks = seq(0, 140, 35))
これにより、140の分母でパーセンテージを取得し、デフォルトの奇妙な数値ではなく25%刻みでスケールを破ることができました。ここで重要なのは、スケールの区切りが、割合ではなく元のカウントによって設定されることです。したがって、ブレークはゼロから分母の値までである必要があり、「breaks」の3番目の引数は分母を必要な数のラベルブレークで割ったものです(例:140 * 0.25 = 35)。