Y軸の数値をバープロットのパーセンテージに変更するにはどうすればよいですか?


107

図のようにy軸をパーセントに変更するにはどうすればよいですか?y軸の範囲は変更できますが、パーセントにすることはできません。 ここに画像の説明を入力してください

回答:


236

使用する:

+ scale_y_continuous(labels = scales::percent)

または、パーセントのフォーマットパラメータを指定するには:

+ scale_y_continuous(labels = scales::percent_format(accuracy = 1))

(このコマンドlabels = percentは、バージョン2.2.1のggplot2から廃止されました)


3
library(scales)これを入力する必要がないことが好きでした。
Akshay Gaur 2018

そして、バージョンが機能scales::percent(accuracy = 1)しないのは、*_format()バージョンが関数を作成するからです... percent()単独で作成するものは何でも、それは正しいですか?
MokeEire

62

原則として、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, "%"))

8
外部依存がない場合は+1。Hadleyはggplot2とscalesの両方の作者であるため、それほど重要ではないことを知っていますが、このソリューションは引き続き高く評価されています。
マークホワイト

44

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

2

上記の@Deenaから借用した、ラベルの関数変更は、思ったよりも用途が広いです。たとえば、カウントされた変数の分母が140であるggplotがありました。このように彼女の例を使用しました。

scale_y_continuous(labels = function(x) paste0(round(x/140*100,1), "%"), breaks = seq(0, 140, 35))

これにより、140分母のパーセンテージを取得し、デフォルトの奇妙な数値ではなく、25%の増分でスケールを分割できました。ここで重要なのは、スケールブレークがパーセンテージではなく元のカウントによって設定されることです。したがって、区切りはゼロから分母の値でなければなりません。「区切り」の3番目の引数は、分母を必要なラベルの区切り数で割ったものです(例:140 * 0.25 = 35)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.