Как изменить положение легенды - PullRequest
1 голос
/ 15 апреля 2020

У меня есть следующий код, создающий точечный график, и я хотел бы изменить положение легенды так, чтобы оно все еще находилось за пределами графика, но в центре или в середине, как я могу это сделать?

 f <- list(
   family = "Courier New, monospace",
   size = 18,
   color = "#7f7f7f"
  )
 x <- list(
   title = "Age of Buildings",
   titlefont = f,
   zeroline = FALSE,
   showline = FALSE,
   showticklabels = TRUE,
   showgrid = TRUE
  )
  y <- list(
    title = "Total Violations",
    titlefont = f,
    zeroline = FALSE,
    showline = FALSE,
    showticklabels = TRUE,
    showgrid = TRUE
   )
fig2 <- plot_ly(final, x=~agebuilding, y=~violationstotal, mode= "markers", color = ~INdexrehabless6, size = ~totalvalue)
fig2 <- fig2 %>% layout(xaxis = x, yaxis = y, legend=list(title=list(text='<b> Housing Conditions </b>'))) #chaging name legend
fig2

Вот сюжет, который я получаю

enter image description here

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Для легенды по умолчанию с вертикальной ориентацией расположение соответствует

layout(legend = list(orientation = "v", y = 1, x = 1))

Если вы хотите поместить его внизу в направлении y, используйте

layout(legend = list(orientation = "v", y = 0, x = 1))

, и если вы хотите, чтобы он был центрирован в направлении y, используйте

layout(legend = list(orientation = "v", y = .5, x = 1))

Если в случае горизонтальной ориентации позиционирование по умолчанию равно

layout(legend = list(orientation = "h", y = -.1, x = 0))

и размещает легенду в левом нижнем углу под участок.

1 голос
/ 15 апреля 2020

Есть несколько способов сделать это:

fig2 <- fig2 + layout(legend = list(x = 0.1, y = 0.9)) #puts it on the plot, mess with x and y numbers


fig2 <- fig2 + layout(legend = list(orientation = 'h')) #puts it on the below the plot

См. Это для получения дополнительной информации: https://plotly.com/r/legend/

По сути, вы просто сделаете это с вашим код:

fig2 <- fig2 %>% layout(xaxis = x, yaxis = y, legend=list(title = list(text='<b> Housing Conditions </b>', orientation = 'h')))
...