Bir barplotta Y ekseni rakamlarını yüzdelere nasıl dönüştürebilirim?


107

Şekildeki gibi y eksenini nasıl yüzde olarak değiştirebiliriz? Y ekseni aralığını değiştirebilirim ama bunu yüzde yapamıyorum. görüntü açıklamasını buraya girin

Yanıtlar:


237

Kullanım:

+ scale_y_continuous(labels = scales::percent)

Veya yüzde için biçimlendirme parametrelerini belirtmek için:

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

(komut labels = percent, ggplot2'nin 2.2.1 sürümünden beri kullanılmamaktadır)


3
Bunun için yazmak zorunda olmaman hoşuma gitti library(scales).
Akshay Gaur

Ve bunun nedeni scales::percent(accuracy = 1), *_format()sürümlerin bir işlev yaratmasıdır , çünkü percent()tek başına ne yaratırsa, bu doğru mu?
MokeEire

62

Prensipte, herhangi bir yeniden biçimlendirme işlevini labelsparametreye aktarabilirsiniz :

+ scale_y_continuous(labels = function(x) paste0(x*100, "%")) # Multiply by 100 & add %  

Veya

+ scale_y_continuous(labels = function(x) paste0(x, "%")) # Add percent sign 

Tekrarlanabilir örnek:

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
Dış bağımlılık olmaması için +1. Hadley, hem ggplot2'nin hem de ölçeklerin yazarı olduğu için, bunun gerçekten önemli olmaması gerektiğini biliyorum - ancak bu çözüm hala takdir edilmektedir.
Mark White

44

ggplot2ve scalespaketler bunu yapabilir:

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()Seçenek kaldırılmış gibi görünüyor ve hata mesajına neden oluyor. Bunu dene:

library(scales)

myplot <- ggplot(mtcars, aes(factor(cyl))) + 
          geom_bar(aes(y = (..count..)/sum(..count..))) + 
          scale_y_continuous(labels=percent)

myplot

2

Yukarıdaki @Deena'dan ödünç alındı, etiketler için bu işlev değişikliği düşündüğünüzden daha çok yönlüdür. Örneğin, sayılan değişkenlerin paydasının 140 olduğu bir ggplot'um vardı. Onun örneğini şu şekilde kullandım:

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

Bu, yüzdelerimi 140 payda üzerinden almamı sağladı ve ardından, varsayılan olarak ayarladığı garip sayılar yerine ölçeği% 25'lik artışlarla kırmama izin verdi. Buradaki anahtar nokta, ölçek aralarının hala yüzdeliklerinize göre değil orijinal sayıya göre ayarlanmasıdır. Bu nedenle, kesmeler sıfırdan payda değerine kadar olmalıdır, "kırılmalardaki" üçüncü bağımsız değişken, payda bölü istediğiniz birçok etiket kesmesine bölünür (ör. 140 * 0.25 = 35).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.