2017-03-29 11 views
7

Tôi đang cố gắng tạo hiệu ứng một số dữ liệu hàng tháng bằng cách sử dụng gganimate. Các ô đang hoạt động tốt, ngoại trừ sự hiện diện của hậu duệ (các chữ cái nằm dưới đường cơ sở, tức là g, j, p, q và y) thay đổi lượng không gian mà tiêu đề chiếm. Điều này, đến lượt nó, di chuyển đường cơ sở của tiêu đề chỉ một chút, điều này làm giảm sự hoạt hình. Đó là, tiêu đề đáng chú ý "nhảy" lên một chút khi có một sự sụt giảm trong tiêu đề.Ngăn không gian tiêu đề thay đổi khi hoạt ảnh bằng chữ cái mong muốn

Một ví dụ:

myDF <- 
    data.frame(
    Date = seq(as.Date("2015-01-15") 
       , as.Date("2015-12-15") 
       , "1 month") 
    , x = 1:12 
    , y = 1:12 
) 

myDF$frame <- 
    factor(format(myDF$Date, "%Y-%b") 
     , levels = paste0("2015-", month.abb)) 

toAnimate <- 
    ggplot(
    myDF 
    , aes(x = x 
      , y = y 
      , frame = frame) 
) + 
    geom_point() + 
    theme_gray() 

gganimate::gganimate(toAnimate) 

enter image description here

Sử dụng một phiên bản cũ của gganimate vấn đề này là rõ ràng hơn (và không đòi hỏi sự bao gồm của năm để chứng minh), vì nó di chuyển những âm mưu thay của tiêu đề:

gganimate::gg_animate(toAnimate) 

enter image description here

Tôi có thể "sửa" vấn đề bằng cách sử dụng tất cả các mũ (không có hậu duệ), nhưng tôi không đặc biệt thích giao diện của tất cả các mũ này (đặc biệt là một phần của tiêu đề lớn hơn cho trường hợp sử dụng thực tế). Tôi cũng có thể thêm vào tiêu đề khung hình với một cái gì đó đã có phần thưởng, ví dụ: ggtitle("Timeperiod: ") mặc dù tôi không muốn thêm văn bản không liên quan chỉ để workaround vấn đề này (thêm "Timeperiod:" là những gì tôi đã đi với cho bây giờ mặc dù).

Tôi đã xem xét trợ giúp trên theme trong ggplot2, nhưng tôi không thấy bất kỳ thứ gì có vẻ như sẽ giải quyết vấn đề này.

+0

Bạn đã cố gắng cập nhật * gganimate *? Phiên bản mới nhất đã thay thế hàm 'gg_animate' bằng' gganimate'. Tôi không thể tạo lại vấn đề với phiên bản mới hơn. – aosmith

+0

Cảm ơn @aosmith. Tôi vừa cập nhật, và vấn đề bây giờ còn tinh tế hơn nhiều (đến mức có khả năng không phải là một vấn đề). Tuy nhiên, bản cập nhật xuất hiện để bây giờ làm cho đường cơ sở của tiêu đề để di chuyển (mà là tốt hơn so với khu vực âm mưu thay đổi, nhưng vẫn không lý tưởng). Vấn đề là ít tinh tế khi có một dẫn đến tháng trong tiêu đề, vì vậy tôi đã điều chỉnh âm mưu một chút (bao gồm cả năm) để làm cho nó dễ dàng hơn để xem. –

Trả lời

2

Dường như tiêu đề chỉ nhận được chiều cao của văn bản chứ không phải chiều cao của phông chữ khi đặt chỗ cho tiêu đề.

Vì vậy, bạn có thể sử dụng geom_text để đặt tiêu đề ở đâu đó trong ô. Ví dụ, nếu tôi làm:

ggplot(myDF, aes(x=x,y=y, label=frame)) + 
    geom_point()+theme_gray() + 
    geom_text(x=2.5,y=5,aes(label=frame),adj=0) 

(cũng giống như một ggplot, không sinh động chưa ...) Tôi có thể xem tất cả 2015 của chính chồng chéo, và xuống của các tên tháng rõ ràng là có, và các văn bản đường cơ sở là hằng số.

Vì vậy, nếu bạn có thể đặt tiêu đề của mình trong không gian tiện dụng trên ô, bạn có thể sử dụng tên đó và sử dụng title_frame=FALSE trong số gganimate của mình.

Tôi cũng sẽ xem xét báo cáo lỗi/nâng cao cho ggplot2. Nếu bạn thực hiện danh hiệu đủ lớn nó thực sự stomps trên cốt truyện:

ggplot(myDF, aes(x=x,y=y)) +geom_point()+theme(plot.title=element_text(size=rel(10),debug=TRUE)) + labs(title="y") 

enter image description here

+0

Đây là giải pháp khắc phục sự cố và giúp đỡ rất nhiều. Trong thực tế, cốt truyện tôi đang tạo ra là đủ phức tạp (các khía cạnh, các yếu tố, vv) sử dụng 'geom_text' làm giải pháp tiêu đề ít hơn lý tưởng.Thật thú vị khi thấy rằng "lỗi" (?) Có thể nằm trong việc xử lý không gian của 'ggplot2'. Tuy nhiên, tôi không chắc chắn trường hợp sử dụng này là đủ để biện minh cho việc tổ chức lại điều đó. Upvoted, nhưng tôi sẽ để lại như là không được chấp nhận trong một thời gian ngắn để xem nếu một câu trả lời giải quyết vấn đề đi lên (tôi nghi ngờ nó, như tôi nghĩ rằng lời giải thích của bạn ngăn cản điều đó). –

+1

Nếu có cách nào đó để thêm "y" vô hình vào tiêu đề, điều đó có thể hoạt động ... Tôi không thể thấy bất kỳ tùy chọn 'element_text' nào để sửa chiều cao. – Spacedman

Các vấn đề liên quan