ggplot2, histogram nasıl kaydırılır?

Jan 15 2021

R'yi öğrenmeye çalışıyorum ve buna "R ile Uygulamalı Programlama" kitabını okuyarak başladım. Bir sorunla karşılaştım ve devam edemiyorum çünkü beni çok rahatsız ediyor. Bir alıştırma olarak, ggplot2 paketini denemem ve bir histogram yapmam gerekiyor. Kullanılacak kod aşağıdaki gibidir:

x <- c(1, 2, 2, 2, 3, 3)

qplot(x, binwidth = 1)

ve histogram resim 1'deki gibi görünmelidir. Ancak, kodu çalıştırdığımda histogramım resimdeki gibi görünmüyor (olması gerekse bile) ve resim 2'deki gibi görünüyor. Temelde aynı ama olması gereken yerin 0,5 ondalık sayıları solunda.

Bazıları bana histogramın neden resim 1'dekiyle aynı görünmediğini ve böyle görünmesi için kodu nasıl düzeltebileceğini söyleyebilir mi?

Resim 1: https://i.stack.imgur.com/dssBQ.jpg Resim 2: https://i.stack.imgur.com/wUk1i.jpg

Yanıtlar

2 Peter Jan 15 2021 at 23:25

Ggplot2_3.3.2'yi R sürüm 4.0.3 ile kullanıyorum.

Burada belirtilen arsa yerine seninle aynı grafiği alıyorum https://rstudio-education.github.io/hopr/packages.html#packages-1.

Kitapta hangi ggplot sürümünün kullanıldığını bulamadım, muhtemelen metnin bir kısmına dayanarak 2014 civarında. @ The_one_neuron'un yorumunu aklımda tutarak, bunun kitap yazıldıktan sonra ggplot2'de yapılan değişikliklerle bir ilgisi olduğundan şüpheleniyorum.

Sorun, gruplama veya daha fazla konuşma dilinde 'kapı ve postalardan' biridir: 1 değerinin 0 ile 1 (0.5 merkezli) yerine 1 ile <2 arasında (1.5 üzerinde ortalanmış) kümelenmesini istiyorsunuz.

@ R2evans adresinde çok daha ayrıntılı bir açıklama var. Tüm değerler> 0 olmasına rağmen geom_histogram neden negatif bölme alt sınırından başlıyor? .

Her neyse, beklenen grafiğinize benzer bir sonuç elde etmek için burada bir şekerleme var.


library(ggplot2)

x <- c(1, 2, 2, 2, 3, 3)

qplot(x, binwidth = 1, breaks = 1:4 - 0.000001, xlim = c(0, 4))

2021-01-15 tarihinde reprex paketi tarafından oluşturuldu (v0.3.0)

the_one_neuron Jan 15 2021 at 21:53

Böyle bir şey yapmayı deneyebilirsin. Mükemmel değil ama çok yakın

qplot(x, binwidth = 1, xlim =c(0,NA), ylab = "count")