Tôi nên trình bày một ô nhỏ ở góc của ô khác trong R như thế nào?Vẽ biểu đồ ở góc khác
Trả lời
Tôi đã làm điều này bằng một cái gì đó như thế này:
# Making some fake data
plot1 <- data.frame(x=sample(x=1:10,10,replace=FALSE),
y=sample(x=1:10,10,replace=FALSE))
plot2 <- data.frame(x=sample(x=1:10,10,replace=FALSE),
y=sample(x=1:10,10,replace=FALSE))
plot3 <- data.frame(x=sample(x=1:10,10,replace=FALSE),
y=sample(x=1:10,10,replace=FALSE))
layout(matrix(c(2,1,1,3,1,1),2,3,byrow=TRUE))
plot(plot1$x,plot1$y)
plot(plot2$x,plot2$y)
plot(plot3$x,plot3$y)
Các matrix
và layout
lệnh cho phép bạn sắp xếp nhiều đồ thị thành một cốt truyện duy nhất. Về cơ bản, bạn đặt số lượng của mỗi ô (theo thứ tự bạn sẽ gọi nó) vào mỗi ô, và sau đó bất kỳ sự sắp xếp nào kết thúc là cách các ô của bạn được đặt ra. Ví dụ, trong trường hợp trên, matrix(c(2,1,1,3,1,1),byrow=TRUE)
kết quả trong một ma trận mà trông như thế này:
[,1] [,2] [,3]
[1,] 2 1 1
[2,] 3 1 1
Vì vậy, bạn có thể kết thúc với một cái gì đó như thế này:
Edited thêm:
Được rồi, vì vậy, nếu bạn muốn tích hợp một ô trong góc, bạn có thể thực hiện điều đó bằng cách sử dụng cùng lệnh layout
bằng cách thay đổi ma trận. Ví dụ, đây là đoạn mã khác nhau:
layout(matrix(c(1,1,2,1,1,1),2,3,byrow=TRUE))
plot1 <- data.frame(x=1:10,y=c(9,10,8,7,3,4,1,2,5,6))
plot2 <- data.frame(x=1:10,y=c(6,7,5,1,2,8,3,10,9,4))
plot(plot1$x,plot1$y,type="o",col="red")
plot(plot2$x,plot2$y,type="o",xlab="",ylab="",main="",sub="",col="blue")
Và ma trận kết quả là:
[,1] [,2] [,3]
[1,] 1 1 2
[2,] 1 1 1
Cốt truyện mà đi ra trông như thế này:
@TAReham cảm ơn và nếu tôi muốn có một âm mưu nhỏ bên trong khác? –
@TAReham cho axample một âm mưu nhỏ chỉ topleft và bên trong cốt truyện khác? –
Đã chỉnh sửa câu trả lời để hiển thị thay thế. – TARehman
Tôi biết câu hỏi này đã bị đóng, nhưng tôi đang ném ví dụ này lên cho hậu thế.
Bạn có thể thực hiện các cách trực quan hóa tùy chỉnh như thế này một cách dễ dàng với gói 'lưới' cơ sở sau khi bạn nhận được các khái niệm cơ bản. Dưới đây là ví dụ nhanh về một số chức năng tùy chỉnh mà tôi sử dụng cùng với bản trình diễn vẽ dữ liệu.
chức năng chỉnh
# Function to initialize a plotting area.
init_Plot <- function(
.df,
.x_Loc,
.y_Loc,
.justify,
.width,
.height
){
# Initialize plotting area to fit data.
# We have to turn off clipping to make it
# easy to plot the labels around the plot.
pushViewport(viewport(xscale=c(min(.df[,1]), max(.df[,1])), yscale=c(min(0,min(.df[,-1])), max(.df[,-1])), x=.x_Loc, y=.y_Loc, width=.width, height=.height, just=.justify, clip="off", default.units="npc"))
# Color behind text.
grid.rect(x=0, y=0, width=unit(axis_CEX, "lines"), height=1, default.units="npc", just=c("right", "bottom"), gp=gpar(fill=space_Background, col=space_Background))
grid.rect(x=0, y=1, width=1, height=unit(title_CEX, "lines"), default.units="npc", just=c("left", "bottom"), gp=gpar(fill=space_Background, col=space_Background))
# Color in the space.
grid.rect(gp=gpar(fill=chart_Fill, col=chart_Col))
}
# Function to finalize and label a plotting area.
finalize_Plot <- function(
.df,
.plot_Title
){
# Label plot using the internal reference
# system, instead of the parent window, so
# we always have perfect placement.
grid.text(.plot_Title, x=0.5, y=1.05, just=c("center","bottom"), rot=0, default.units="npc", gp=gpar(cex=title_CEX))
grid.text(paste(names(.df)[-1], collapse=" & "), x=-0.05, y=0.5, just=c("center","bottom"), rot=90, default.units="npc", gp=gpar(cex=axis_CEX))
grid.text(names(.df)[1], x=0.5, y=-0.05, just=c("center","top"), rot=0, default.units="npc", gp=gpar(cex=axis_CEX))
# Finalize plotting area.
popViewport()
}
# Function to plot a filled line chart of
# the data in a data frame. The first column
# of the data frame is assumed to be the
# plotting index, with each column being a
# set of y-data to plot. All data is assumed
# to be numeric.
plot_Line_Chart <- function(
.df,
.x_Loc,
.y_Loc,
.justify,
.width,
.height,
.colors,
.plot_Title
){
# Initialize plot.
init_Plot(.df, .x_Loc, .y_Loc, .justify, .width, .height)
# Calculate what value to use as the
# return for the polygons.
y_Axis_Min <- min(0, min(.df[,-1]))
# Plot each set of data as a polygon,
# so we can fill it in with color to
# make it easier to read.
for (i in 2:ncol(.df)){
grid.polygon(x=c(min(.df[,1]),.df[,1], max(.df[,1])), y=c(y_Axis_Min,.df[,i], y_Axis_Min), default.units="native", gp=gpar(fill=.colors[i-1], col=.colors[i-1], alpha=1/ncol(.df)))
}
# Draw plot axes.
grid.lines(x=0, y=c(0,1), default.units="npc")
grid.lines(x=c(0,1), y=0, default.units="npc")
# Finalize plot.
finalize_Plot(.df, .plot_Title)
}
đang Demo
grid.newpage()
# Specify main chart options.
chart_Fill = "lemonchiffon"
chart_Col = "snow3"
space_Background = "white"
title_CEX = 1.4
axis_CEX = 1
plot_Line_Chart(data.frame(time=1:1860, EuStockMarkets)[1:5], .x_Loc=1, .y_Loc=0, .just=c("right","bottom"), .width=0.9, .height=0.9, c("dodgerblue", "deeppink", "green", "red"), "EU Stocks")
# Specify sub-chart options.
chart_Fill = "lemonchiffon"
chart_Col = "snow3"
space_Background = "lemonchiffon"
title_CEX = 0.8
axis_CEX = 0.7
for (i in 1:4){
plot_Line_Chart(data.frame(time=1:1860, EuStockMarkets)[c(1,i + 1)], .x_Loc=0.15*i, .y_Loc=0.8, .just=c("left","top"), .width=0.1, .height=0.1, c("dodgerblue", "deeppink", "green", "red")[i], "EU Stocks")
}
Wow. Điều đó chắc chắn làm cho phản ứng của tôi trông khá yếu so với việc so sánh. :) – TARehman
@TARehman Sự khác biệt chính, mặc dù, là phương pháp 'par' trong câu trả lời của bạn có thể chấp nhận các chức năng vẽ sơ đồ cơ sở, trong khi phương pháp 'lưới' sẽ yêu cầu bạn chỉ định phương thức vẽ của riêng bạn. Đó là chủ yếu là một câu hỏi về thời gian và chỉ cần làm thế nào tùy chỉnh cốt truyện của bạn cần phải được. – Dinre
Câu hỏi không được đóng và OP chắc chắn có khả năng thay đổi lựa chọn của họ khi câu trả lời nhận được dấu kiểm. – Dason
Bạn cũng có thể sử dụng par(fig=..., new=TRUE)
.
x <- rnorm(100)
hist(x, col = "light blue")
par(fig = c(.7, .95, .7, .95), mar=.1+c(0,0,0,0), new = TRUE)
qqnorm(x, axes=FALSE, xlab="", ylab="", main="")
qqline(x, col="blue", lwd=2)
box()
Tôi thích tùy chọn này rất nhiều cho nó đơn giản và khả năng sử dụng các chức năng âm mưu cơ bản. Là một người sử dụng 'lưới', tôi không tự mình sử dụng nó, nhưng tôi sẽ phải nhớ điều này cho những người khác hỏi. Cảm ơn bạn đã chỉ ra điều này. – Dinre
Các subplot
chức năng trong gói TeachingDemos thực hiện chính xác này cho đồ họa cơ bản.
Tạo ô có kích thước đầy đủ, sau đó gọi subplot
bằng lệnh vẽ âm mưu mà bạn muốn trong subplot và chỉ định vị trí của subplot. Vị trí có thể được xác định bằng từ khóa như "topleft" hoặc bạn có thể cho nó tọa độ trong hệ thống tọa độ người dùng lô hiện tại.
- 1. Vẽ văn bản trên Canvas ở góc
- 2. Vẽ Văn bản ở Góc An
- 3. Vẽ biểu đồ web
- 4. Vẽ và vẽ biểu đồ trong OpenCV
- 5. Vẽ biểu đồ Python ASCII
- 6. Vẽ biểu đồ trong OpenCV-Python
- 7. Vẽ một đường ở một góc cụ thể trong Java
- 8. Lỗi vẽ biểu đồ phân loại SVM
- 9. Đề xuất về vẽ biểu đồ
- 10. Vẽ biểu đồ Haskell trên Windows
- 11. Vẽ và lưu biểu đồ R
- 12. Api để vẽ biểu đồ trong android
- 13. Biểu đồ phóng to ở D3
- 14. vẽ đường cong trơn trong biểu đồ matplotlib
- 15. Vẽ hai biểu đồ cùng lúc với matplotlib
- 16. Cách vẽ 2 loại biểu đồ trên cùng biểu đồ sử dụng EPPlus
- 17. Làm cách nào để vẽ biểu đồ một biểu đồ xếp chồng 3D trong R?
- 18. sao chép biểu đồ (adjacency_list) sang một biểu đồ khác
- 19. Biểu đồ trong WPF sử dụng biểu đồ # không được vẽ như một chuỗi
- 20. vẽ biểu đồ các dấu thời gian unix trong matplotlib
- 21. Cách tốt nhất để vẽ biểu đồ thanh trong LaTeX?
- 22. GridLine ở trên cùng của Biểu đồ thanh trong Mathematica
- 23. vẽ biểu đồ các biểu đồ có chiều cao thanh lên tới 1 trong matplotlib
- 24. Chương trình vẽ biểu đồ nguồn mở hỗ trợ kiểm tra biểu đồ phẳng?
- 25. Vẽ hai biểu đồ chia sẻ trục x trong matplotlib
- 26. Vẽ Bản đồ địa hình
- 27. vẽ nhiều biểu đồ trong cùng một hình với màu sắc khác nhau trong MATLAB
- 28. Vẽ biểu đồ có chiều rộng đột quỵ 1 pixel trong bản vẽ khổ A4
- 29. Python: mô-đun để vẽ biểu đồ Gantt
- 30. Vẽ một biểu đồ đơn giản trên iPhone
Với ggplot2, hãy xem ví dụ cuối cùng trong '? Annotation_custom' – baptiste