【问题标题】:plotly in R: Listing legend items horizontally and centered below a plot在 R 中绘图:水平列出图例项并在绘图下方居中
【发布时间】: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。因此,理想情况下看起来像这样:

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

【问题讨论】:

    标签: r legend plotly


    【解决方案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值?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2018-08-19
    • 2011-12-08
    • 1970-01-01
    • 2017-11-17
    • 2014-03-12
    相关资源
    最近更新 更多