在 R 中绘图:水平列出图例项并在绘图下方居中
Posted
技术标签:
【中文标题】在 R 中绘图:水平列出图例项并在绘图下方居中【英文标题】:plotly in R: Listing legend items horizontally and centered below a plot 【发布时间】:2017-02-01 18:18:10 【问题描述】:我一直在调整图例和 R 中的图例。我无法弄清楚的一件事是如何(如果可能的话)重新定位图例项,以便它们水平列出并居中位于图下方。默认的图例项是垂直放置的,位于绘图的右侧,如下所示:
plot_ly(data = iris, x = Sepal.Length, y = Petal.Length, mode = "markers", color = Species)
我可以通过以下方式获得下面的图例并以情节为中心:
plot_ly(data = iris, x = Sepal.Length, y = Petal.Length, mode = "markers", color = Species) %>% layout(legend = list(x = 0.35, y = -0.5))
但是,我注意到此图例位置会根据我查看绘图的方式(我制作绘图窗口的尺寸等)而变化。正因为如此,图例有时会意外地与情节重叠(通过定位太高)或与情节分开一个笨拙的大距离(通过定位太低)。以下是图例位置过低的示例图片:
此外,将图例放置在图下方时,将图例项目水平(而不是垂直)列出可能会更好。在此示例中,最好在图例中从左到右(而不是从上到下)列出Virginica、versicolor 和 setosa。因此,理想情况下看起来像这样:
是否有可能在水平列出其项目时获得这个 - 即位于绘图中心和下方的图例(不随窗口大小改变位置)?
【问题讨论】:
【参考方案1】:根据documentation,以下应该可以解决问题:
data(iris)
plot_ly(data = iris,
x = ~Sepal.Length,
y = ~Petal.Length,
mode = "markers",
color = ~Species) %>%
layout(legend = list(orientation = "h", # show entries horizontally
xanchor = "center", # use center of legend as anchor
x = 0.5)) # put legend in center of x-axis
它将图例方向设置为“水平”,然后将锚点(我们指定的位置)设置为图例的中心,然后将其定位在 x 轴的中间。结果如下图:
【讨论】:
谢谢! x 轴标签和具有一定缩放级别的图例之间有一点重叠:知道如何管理它们之间的空间吗? 将y=-0.2
添加到legend=list()
应将图例放在x 轴标签下方。调整值以获得所需的拟合。
我确认@TTS。将y
设置为负值,例如-0.2
或-0.3
就可以了。谢谢。
是否可以在标题下方垂直对齐(无需猜测y值?)以上是关于在 R 中绘图:水平列出图例项并在绘图下方居中的主要内容,如果未能解决你的问题,请参考以下文章