Tôi đã gặp phải vấn đề thú vị với việc mở rộng quy mô bằng ggplot. Tôi có một tập dữ liệu mà tôi có thể đồ thị tốt bằng cách sử dụng quy mô tuyến tính mặc định nhưng khi tôi sử dụng scale_y_log10() các con số đi theo cách tắt. Dưới đây là một số mã ví dụ và hai hình ảnh. Lưu ý rằng giá trị lớn nhất trong thang đo tuyến tính là ~ 700 trong khi kết quả thu nhỏ nhật ký có giá trị là 10^8. Tôi cho bạn thấy rằng toàn bộ tập dữ liệu chỉ dài ~ 8000 mục nên có gì đó không đúng.ggplot scale_y_log10() issue
Tôi tưởng tượng vấn đề có liên quan đến cấu trúc tập dữ liệu của tôi và việc binning khi tôi không thể sao chép lỗi này trên tập dữ liệu chung như 'kim cương'. Tuy nhiên tôi không chắc chắn cách tốt nhất để khắc phục sự cố.
cảm ơn, zach cp
Edit: bdamarest có thể tạo lại vấn đề quy mô trên các tập dữ liệu kim cương như thế này:
example_1 = ggplot(diamonds, aes(x=clarity, fill=cut)) +
geom_bar() + scale_y_log10(); print(example_1)
#data.melt is the name of my dataset
> ggplot(data.melt, aes(name, fill= Library)) + geom_bar()
> ggplot(data.melt, aes(name, fill= Library)) + geom_bar() + scale_y_log10()
> length(data.melt$name)
[1] 8003
đây là một số dữ liệu ví dụ ... và tôi nghĩ rằng tôi thấy sự cố. Bộ dữ liệu đã tan chảy ban đầu có thể dài ~ 10^8 hàng. Có lẽ các số hàng đang được sử dụng cho các số liệu thống kê?
> head(data.melt)
Library name group
221938 AB Arthrofactin glycopeptide
235087 AB Putisolvin cyclic peptide
235090 AB Putisolvin cyclic peptide
222125 AB Arthrofactin glycopeptide
311468 AB Triostin cyclic depsipeptide
92249 AB CDA lipopeptide
> dput(head(test2))
structure(list(Library = c("AB", "AB", "AB", "AB", "AB", "AB"
), name = c("Arthrofactin", "Putisolvin", "Putisolvin", "Arthrofactin",
"Triostin", "CDA"), group = c("glycopeptide", "cyclic peptide",
"cyclic peptide", "glycopeptide", "cyclic depsipeptide", "lipopeptide"
)), .Names = c("Library", "name", "group"), row.names = c(221938L,
235087L, 235090L, 222125L, 311468L, 92249L), class = "data.frame")
UPDATE:
số Row không vấn đề. Dưới đây là cùng một dữ liệu vẽ đồ thị bằng cách sử dụng cùng một aes trục x và điền màu sắc và rộng là hoàn toàn chính xác:
> ggplot(data.melt, aes(name, fill= name)) + geom_bar()
> ggplot(data.melt, aes(name, fill= name)) + geom_bar() + scale_y_log10()
> length(data.melt$name)
[1] 8003
cảm ơn Brian, tôi đánh giá cao sự giải thích chi tiết của bạn. Bạn cũng có thể sử dụng geom_bar (position = "dodge") (trả lời lịch sự của Winston Chang) – zach
Để hiểu rõ hơn về những gì đang xảy ra ở đây, các biểu đồ thanh xếp chồng thường cung cấp cho bạn chiều cao thanh bằng tổng số đếm. Tuy nhiên, tổng (log (đếm)) tương đương với log (sản phẩm (đếm)). Nói cách khác, bạn sẽ thấy chiều cao thanh như thể bạn nhân số lượng với nhau. – Brian