饼图的主要标题与垂直图的垂直位置相同

时间:2018-07-22 12:45:49

标签: r plot graphics title plotrix

我想通过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")

enter image description here

2 个答案:

答案 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输出:

enter image description here