#r #plotly #legend #r-plotly
#r #plotly #легенда #r-plotly
Вопрос:
Я новичок в plotly и в настоящее время пытаюсь создать три разных графика для трех индикаторов: коэффициентов Джини и Пальмы и S80 / S20. У меня есть следующие две проблемы:
- в легенде указаны названия индикаторов, однако я бы хотел, чтобы они отображали для трех разных символов три разных года, скажем: circle = 2018, x = 2019, o = 2020. Можно ли это скорректировать?
- могут ли три графика отображаться на некотором расстоянии друг от друга (скажем, 1-2 см расстояния между графиками)?
Большое вам спасибо за любую помощь. Полный код здесь:
library(plotly)
gini<-as.data.frame(c(0.4, 0.3, 0.2))
palma<-as.data.frame(c(1.2, 1.1, 1.0))
S<-as.data.frame(c(5.2, 5.1, 5.0))
p <- plot_ly(gini, x = "Coeff. di Gini", y = ~gini$`c(0.4, 0.3, 0.2)`, alpha = 0.7)
q<- plot_ly(palma, x="Coeff. di Palma", y=~palma$`c(1.2, 1.1, 1)`, alpha=0.7)
r<-plot_ly(S, x="S80/S20", y=~S$`c(5.2, 5.1, 5)`, alpha=0.7)
subplot(
add_trace(p, name = "Coeff. di Gini", x = "Coeff. di Gini", y = ~gini$`c(0.4, 0.3, 0.2)`, symbol = ~gini$`c(0.4, 0.3, 0.2)`, symbols = c('circle','x','o'),
marker = list(size = 10),type = 'scatter', mode = 'lines markers'),
add_trace(q, name="Coeff. di Palma", x = "Coeff. di Palma", y = ~palma$`c(1.2, 1.1, 1)`, symbol = ~palma$`c(1.2, 1.1, 1)`, symbols = c('circle','x','o'),
marker = list(size = 10), type = 'scatter', mode = 'lines markers'),
add_trace(r, name="S80/S20", x = "S80/S20", y = ~S$`c(5.2, 5.1, 5)`, symbol = ~S$`c(5.2, 5.1, 5)`, symbols = c('circle','x','o'),
marker = list(size = 10), type = 'scatter', mode = 'lines markers')
)
Комментарии:
1. Вы не упоминаете, что
s
есть.2. @MagnusNordmo отредактировано, спасибо
Ответ №1:
в легенде указаны названия индикаторов, однако я бы хотел, чтобы они отображали для трех разных символов три разных года, скажем: circle = 2018, x = 2019, o = 2020. Можно ли это скорректировать?
Вы можете добавить трассы, которые служат только для создания легенды, но точки не отображаются.
visible = 'legendonly'
и скройте легенду ваших «реальных» трасс.
showLegend = F
могут ли три графика отображаться на некотором расстоянии друг от друга (скажем
1-2 см расстояния между графиками)?
Если вы добавляете margin
к своему вызову подзаголовок, вы указываете расстояние между подзаголовками. Требуется немного повозиться, но вы могли бы попробовать
margin = 0.1
library(plotly)
gini <- as.data.frame(c(0.4, 0.3, 0.2))
palma <- as.data.frame(c(1.2, 1.1, 1.0))
S <- as.data.frame(c(5.2, 5.1, 5.0))
p <- plot_ly(x = "Coeff. di Gini",
y = gini$`c(0.4, 0.3, 0.2)`,
alpha = 0.7,
name = "Coeff. di Gini",
symbol = gini$`c(0.4, 0.3, 0.2)`,
symbols = c('circle','x','o'),
marker = list(size = 10),
type = 'scatter',
mode = 'lines markers',
showlegend=F) %>%
add_markers(name = "2018",
marker = list(size = 10, symbol = 'circle'),
showlegend=T, visible='legendonly') %>%
add_markers(name = "2019",
marker = list(size = 10, symbol = 'x'),
showlegend=T, visible='legendonly') %>%
add_markers(name = "2020",
marker = list(size = 10, symbol = 'circle-open'),
showlegend=T, visible='legendonly')
q <- plot_ly(x="Coeff. di Palma",
y=palma$`c(1.2, 1.1, 1)`,
alpha=0.7,
name="Coeff. di Palma",
symbol = palma$`c(1.2, 1.1, 1)`,
symbols = c('circle','x', 'o'),
marker = list(size = 10),
type = 'scatter',
mode = 'lines markers',
showlegend=F)
r <- plot_ly(x="S80/S20",
y=S$`c(5.2, 5.1, 5)`,
alpha=0.7,
name="S80/S20",
symbol = ~S$`c(5.2, 5.1, 5)`,
symbols = c('circle','x','o'),
marker = list(size = 10),
type = 'scatter',
mode = 'lines markers',
showlegend=F)
subplot(
add_trace(p),
add_trace(q),
add_trace(r),
margin = 0.1
) %>% layout(showlegend=T)
Комментарии:
1. спасибо за ваш ответ, это очень помогает в моем процессе обучения!