ggplot2, làm thế nào để thay đổi biểu đồ?

Jan 15 2021

Tôi đang cố gắng học R và tôi vừa bắt đầu điều này bằng cách xem qua cuốn sách "Thực hành lập trình với R". Tôi đã gặp sự cố và không thể tiếp tục vì nó làm phiền tôi rất nhiều. Như một bài tập, tôi phải thử nghiệm với gói ggplot2 và tạo biểu đồ. Mã sẽ được sử dụng như sau:

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

qplot(x, binwidth = 1)

và biểu đồ sẽ giống như trong hình một. Tuy nhiên, khi tôi chạy mã, biểu đồ của tôi không giống như trong hình (mặc dù nó phải) và trông giống như trong hình 2. Về cơ bản, nó giống nhau nhưng 0,5 số thập phân ở bên trái vị trí của nó.

Một số có thể vui lòng cho tôi biết tại sao biểu đồ không giống như trong hình 1 và làm thế nào để sửa mã để làm cho nó giống như vậy?

Bức tranh 1: https://i.stack.imgur.com/dssBQ.jpg Hình 2: https://i.stack.imgur.com/wUk1i.jpg

Trả lời

2 Peter Jan 15 2021 at 23:25

Tôi đang sử dụng ggplot2_3.3.2 với R phiên bản 4.0.3.

Tôi nhận được cùng một biểu đồ như bạn làm chứ không phải là âm mưu như được trình bày trong https://rstudio-education.github.io/hopr/packages.html#packages-1.

Tôi không thể tìm thấy phiên bản ggplot nào được sử dụng trong cuốn sách, có thể từ khoảng năm 2014 dựa trên một số nội dung. Ghi nhớ nhận xét của @ the_one_neuron Tôi nghi ngờ rằng điều này có liên quan đến những thay đổi đối với ggplot2 kể từ khi cuốn sách được viết.

Vấn đề là một trong những 'cổng và bài đăng' thông thường hoặc nhiều hơn: bạn muốn giá trị 1 được đặt trong khoảng từ 1 đến <2 (căn giữa là 1,5) thay vì từ 0 đến 1 (căn giữa vào 0,5).

Có một lời giải thích chi tiết hơn từ @ r2evans tại Tại sao geom_histogram bắt đầu ở giới hạn dưới của bin âm mặc dù tất cả các giá trị đều> 0? .

Dù sao thì đây cũng là một thao tác giả để có được kết quả tương tự như đồ thị mong đợi của bạn.


library(ggplot2)

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

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

Được tạo vào 2021-01-15 bởi gói reprex (v0.3.0)

the_one_neuron Jan 15 2021 at 21:53

Bạn có thể thử làm điều gì đó như thế này. Nó không hoàn hảo nhưng nó rất gần

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