我想通过par(mfrow = c(1, 2)
并排绘制法线图和饼图(plotrix程序包)。两个图形的主标题应具有相同的垂直位置。但是,默认情况下,两个主要标题的位置都不同。
问题:如何确保饼图的主标题与法线图中的标题具有相同的垂直位置?
请考虑以下R中的可复制示例。“较低的主标题”应与“具有通常高度的主标题”处于相同的高度。
# Set panel layout
par(mfrow = c(1, 2))
# Normal plot with normal height of main
plot(1:10, 1:10, main = "Main title with usual height")
# Load plotrix package for piecharts
library("plotrix")
# Pie chart with lower main title position
pie3D(1:5, labels = letters[1:5], main = "Lower main title")
答案 0 :(得分:1)
问题在于两个面板的绘图区域不同。如果您使用pie3D(..., pty = "m")
,它们将获得相同的绘图区域,但是除非您选择了一个使馅饼的绘图区域近似为正方形的窗口,否则饼图看起来会变形。
另一种解决方案是更改饼图的绘制区域以匹配另一个饼图,然后在其后绘制标题。例如,
# Set panel layout
par(mfrow = c(1, 2))
# Normal plot with normal height of main
plot(1:10, 1:10, main = "Main title with usual height")
# Save the plot region
plt <- par("plt")
# Load plotrix package for piecharts
library("plotrix")
# Pie chart with lower main title position
pie3D(1:5, labels = letters[1:5], main = "")
# Restore the original plot region and add the title
par(plt = plt)
title(main = "Pie title with matching height")
这将起作用,直到您更改绘图窗口的形状;饼图区域尝试保持正方形,这将使标题上下移动。
答案 1 :(得分:1)
如果您不介意两个图的大小相同,则可以使用layout()
函数根据指定的行或列对设备进行划分。
因此,首先您要指定绘图所在的两行
# So create matrix with 1 row, and specify size and width of your plots
two.rows.plot <- layout(matrix(c(1, 2), nrow = 1), widths = c(5, 5), heights = c(5, 5), TRUE)
layout.show(two.rows.plot) # how the device is being split up into different figure regions
更新
根据@ user2554330 可以仅使用设置替换以上代码
par(pty = "s")
这意味着我们设置了一个图形参数,该参数将生成一个正方形绘图区域。
然后使用您的代码
# Normal plot with normal height of main
plot(1:10, 1:10, main = "Main title with usual height")
# Load plotrix package for piecharts
library("plotrix")
# Pie chart with lower main title position
pie3D(1:5, labels = letters[1:5], main = "Lower main title")
ant输出: