R Plotly - добавить аннотацию к опорной линии в графике рассеяния
Я создал диаграмму рассеяния с помощью Plotly в R, используя набор данных радужной оболочки, и добавил две опорные линии, одну на оси x, обозначающую среднее значение Sepal.Width, а другую на оси y, обозначающую среднее значение Sepal.Length.
Ниже приведен исполняемый код R:
library(dplyr)
library(plotly)
iris <- datasets::iris
scatterplot <- plot_ly(data = iris, x = ~Sepal.Width, y = ~Sepal.Length, type = 'scatter',
text = ~Species,
color = I('orange')) %>%
layout(shapes=list(list(type = 'line',
x0 = mean(iris$Sepal.Width),
x1 = mean(iris$Sepal.Width),
y0 = 4,
y1 = 8,
line = list(width = 2)),
list(type = 'line',
x0 = 1.5,
x1 = 5,
y0 = mean(iris$Sepal.Length),
y1 = mean(iris$Sepal.Length),
line = list(width = 2))))
scatterplot
Приведенный выше код R создает следующий вывод Plotly
Я хочу добавить текст аннотации (т. Е. Метку) для двух опорных линий ("Средняя ширина сепалы" и "Средняя длина сепалы").
Я сталкивался с подобным сообщением, однако упомянутое там решение не работало для меня. Если кто-то может предоставить мне решение с кодом, то это будет высоко оценено.
PS: я использую Plotly версии 4.8.0
1 ответ
Следующий код решил мою проблему. Надеюсь, это поможет кому-то.
library(dplyr)
library(plotly)
iris <- datasets::iris
scatter <- plot_ly(data = iris, x = ~Sepal.Width, y = ~Sepal.Length, type = 'scatter',
text = ~Species,
color = I('orange')) %>%
layout(shapes=list(list(type = 'line',
x0 = mean(iris$Sepal.Width),
x1 = mean(iris$Sepal.Width),
y0 = 4,
y1 = 8,
line = list(width = 2)),
list(type = 'line',
x0 = 1.5,
x1 = 5,
y0 = mean(iris$Sepal.Length),
y1 = mean(iris$Sepal.Length),
line = list(width = 2))),
annotations = list(list(
x = 3.4,
y = 7.9,
xref = 'x',
yref = 'y',
text = 'Mean Sepal Width',
showarrow = FALSE
),
list(
x = 4.7,
y = 5.6,
xref = 'x',
yref = 'y',
text = 'Mean Sepal Length',
showarrow = FALSE
)))
scatter