Khi sử dụng facet_grid
, ggplot2
chia các danh mục chính tạo nên các biến khía cạnh với một đường trắng rộng hơn bình thường. Điều này phục vụ hầu hết các mục đích tốt. Đôi khi tôi muốn hiển thị rõ ràng hơn các phân chia giữa các phân loại chính này và muốn làm bóng phân chia khía cạnh với một màu khác. Có cách nào làm được việc này không? Cảm ơn.Làm thế nào để thay đổi màu sắc của các đường viền khía cạnh khi sử dụng facet_grid
Trả lời
Mặc dù một năm cuối, tôi thấy đây là một sửa chữa dễ dàng:
ggplot(mpg, aes(cty, hwy, color = factor(year)))+
geom_point()+
facet_grid(cyl ~ drv) +
theme(panel.margin=unit(.05, "lines"),
panel.border = element_rect(color = "black", fill = NA, size = 1),
strip.background = element_rect(color = "black", size = 1))
Hãy thử điều này - bạn có thể kiểm soát điều này với strip.background
, được định dạng bằng cuộc gọi element_rect
.
qplot (Hwy, cty, data = mpg) + facet_grid (. ~ Nhà sản xuất) +
chủ đề (strip.text.x = element_text (size = 8, color = "red", góc = 90), strip.background = element_rect (điền = "DARKBLUE", color = NA))
Đó độc đáo màu sắc của nền hình chữ nhật nơi nhãn khía cạnh xuất hiện nhưng không thay đổi khoảng trống giữa các loại - các đường màu trắng chạy chiều dài của ô tách các nhóm mặt. –
Bạn có thể cần phải sử dụng ggplot
's bảng bố trí và gtable
chức năng.
library(ggplot2)
library(gtable)
library(grid)
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point() +
facet_grid(am ~ cyl)
## Get the plot grob
gt <- ggplotGrob(p)
## Check the layout
gtable_show_layout(gt) # Vertical gaps are in columns 5 and 7
# and span rows 4 to 9
# Horizontal gap is in row 8
# and spans columns 4 to 9
## To automate the selection of the relevant rows and columns:
## Find the panels in the layout
## (t, l, b, r refer to top, left, bottom, right);
## The gaps' indices are one to the right of the panels' r index (except the right most panel);
## and one below the panels' b index (except the bottom most panel);
## Rmin and Rmax give the span of the horizontal gap;
## Bmin and Bmax give the span of the vertical gap;
## cols and rows are the columns and row indices of the gaps.
panels = subset(gt$layout, grepl("panel", gt$layout$name), t:r)
# The span of the horizontal gap
Rmin = min(panels$r)
Rmax = max(panels$r) + 1
#The span of the vertical gap
Bmin = min(panels$t) - 1
Bmax = max(panels$t)
# The columns and rows of the gaps
cols = unique(panels$r)[-length(unique(panels$r))] + 1
rows = unique(panels$t)[-length(unique(panels$t))] + 1
# The grob - orange rectangle
g = rectGrob(gp = gpar(col = NA, fill = "orange"))
## Add orange rectangles into the vertical and horizontal gaps
gt <- gtable_add_grob(gt,
rep(list(g), length(cols)),
t=Bmin, l=cols, b=Bmax)
gt <- gtable_add_grob(gt,
rep(list(g), length(rows)),
t=rows, l=Rmin, r=Rmax)
## Draw it
grid.newpage()
grid.draw(gt)
Điều này thực sự tuyệt vời. Tôi tự hỏi nếu cách tiếp cận này sẽ cho phép sửa đổi một đối tượng 'ggplot' sẽ dẫn đến một đối tượng' ggplot' khác có thể có các lớp 'ggplot' được thêm vào trong một bước sau. Trên một lưu ý không liên quan, tôi đã gặp rắc rối khi thêm các chú thích trong các đối tượng 'ggplot' và giữ chúng là lớp' ggplot'. Tôi đã thử tất cả các phương pháp được liệt kê ở nơi khác trên stackoverflow. Có thể 'gtable' là một cách tiếp cận thay thế? –
Tôi nghĩ câu trả lời cho câu hỏi của bạn sẽ là "có". 'gtable' cho phép một số sửa đổi phức tạp đối với các ggplots ban đầu. Ví dụ: người ta có thể thêm hàng và cột vào bố cục ggplot, sau đó chèn các cột vào chúng. @baptiste đã tổng hợp một số ghi chú tại [https://github.com/baptiste/gtable/wiki/Description](https://github.com/baptiste/gtable/wiki/Description) –
Nói chung tôi sẽ có các ô với số lượng các hàng/cột khía cạnh khác nhau. Bạn có thể nghĩ ra một cách nhạy cảm với dữ liệu để chỉ định 'Rmin' và' Bmin' không? –
- 1. Làm cách nào để thay đổi màu sắc của đường kẻ và dải ruy băng trong một facet_grid
- 2. Làm thế nào để thay đổi thứ tự của nhãn khía cạnh trong ggplot (tùy chỉnh khía cạnh nhãn bọc)
- 3. Thay đổi màu sắc của rgba màu
- 4. Làm thế nào để thay đổi màu sắc của khởi động chuyển đổi thả xuống Bootstrap?
- 5. Xoay chuyển nhãn khía cạnh trong ggplot2 facet_grid
- 6. Làm thế nào để thay đổi màu sắc của biên giới QMainWindow và thanh tiêu đề?
- 7. EPPlus Thay đổi Màu đường viền của các ô
- 8. Làm thế nào để thay đổi màu sắc của văn bản trong javafx TextField?
- 9. ggplot2: Làm thế nào để trao đổi trục y và dải khía cạnh phải và làm thế nào để đặt hàng giá trị khía cạnh
- 10. WPF: Làm thế nào để animate thay đổi màu sắc?
- 11. chỉ vẽ một vài khía cạnh được chọn trong facet_grid
- 12. thay đổi màu đường viền hộp kiểm
- 13. Làm cách nào để thay đổi màu đường viền (hoặc xóa đường viền) của điều khiển PropertyGrid?
- 14. Cách thay đổi màu đường viền của trường text UIAlertController
- 15. Làm cách nào để thay đổi màu của đường viền dưới cùng của UINavigationBar?
- 16. Visual Studio, Làm thế nào để thay đổi màu sắc của các lớp học?
- 17. Làm cách nào để thay đổi màu đường viền (không tập trung) của EditText?
- 18. Trong ggplot2, làm thế nào tôi có thể thay đổi đường viền của các mặt được chọn?
- 19. Làm thế nào để thay đổi màu sắc của UIPageControl khi được sử dụng trong ios 5 mô phỏng
- 20. Thay đổi màu đường viền của văn bản iOS
- 21. Làm cách nào để thay đổi màu đường viền khi sử dụng chức năng 'điền' trong MATLAB?
- 22. Làm thế nào để thay đổi màu sắc của dòng trong ICS theo kiểu EditText
- 23. Làm cách nào để thay đổi màu của đường viền trên hộp nhóm?
- 24. Làm thế nào để thay đổi màu sắc của hud nơi màu xám
- 25. Làm cách nào để thay đổi màu đường viền của biểu mẫu C#?
- 26. Làm thế nào để thay đổi màu sắc của dòng phân cách ListView Android?
- 27. Tại sao màu sắc của nút gửi thay đổi lạ?
- 28. Màu đường viền thay đổi Edittext với shape.xml
- 29. ggplot2 cốt truyện đường có các khu vực của dòng đầy màu sắc rắn, tại sao?
- 30. Làm cách nào để thay đổi tab của nút Dừng màu đường viền đứt nét trong WPF?
Điều này trông giống như một giải pháp đơn giản, nhưng tôi không nghĩ rằng nó có thể khái quát hóa cho tất cả các tình huống. Điều gì sẽ xảy ra nếu bạn muốn có thêm không gian giữa các bảng? Hoặc thậm chí là biên lợi nhuận mặc định? Kích thước đường biên của bảng điều khiển cần phải được tăng lên. Nhưng sau đó các đường biên dày hơn được vẽ bên trong và bên ngoài bảng điều khiển.Không chỉ cốt truyện trông xấu xí, người ta cuối cùng cũng mất thông tin; ví dụ, với một dòng đủ dày, các điểm trên cùng bên phải trong bảng điều khiển giữa ở hàng trên cùng biến mất dưới đường ranh giới. –
Hoặc, người ta muốn một màu khác với màu đen? –
ok, có một số điều bạn có thể làm bằng cách điều chỉnh các biến trong chủ đề **() **: * Thay đổi màu trong element_rect (color = "black" ...) cho cả ** panel.border ** và * * strip.background ** * Tăng khoảng cách bằng cách tăng ** panel.margin = unit (.05, "lines") ** Để giải quyết vấn đề đường dày bao phủ các điểm, bạn có thể thay đổi x & y giới hạn của các ô – yake84