R语言 在图下方水平居中列出图例项

fnatzsnv  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(172)

我一直在调整plotly和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从左到右列出(而不是从上到下)。因此,理想情况下看起来如下所示:

是否有可能获得这一点-也就是说,一个图例位于图的中心和下方(不随窗口大小改变位置),同时水平列出其项目?

v7pvogib

v7pvogib1#

根据文档,以下内容应该可以做到这一点:

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轴的中间。这将导致下图:

相关问题