plotly
パッケージを使用しており、グラフに水平線を追加しようとしています。 plotlyを使用してそれを行う方法はありますか?
以下に示すように、ggplot2
およびggplotly
関数を使用して実行できます。
library(plotly)
p <- ggplot() +
geom_hline(yintercept = 4) +
xlim(c(0,10)) +
ylim(c(0,10))
ggplotly(p)
ただし、これを既存のプロットプロットに追加することはできません。
また、グラフの軸は固定されていないため、水平線のx座標とy座標を単純に計算することは困難ですが(不可能ではありません)、自動的に追加するだけです。
Y0とdyの引数を調べましたが、それらが機能するコードを取得することもできないようです。彼らが何をしているのか正確にはわかりませんが、おそらく私が探しているものだと思いますか?それらの使用法の良い例を見つけることができません。
これを行う主な方法があります(データまたは「紙」座標のいずれかを使用)。データ座標を仮定すると、現在の最も簡単な方法はadd_segments()
を介したものです:
plot_ly() %>%
add_segments(x = 4, xend = 4, y = 0, yend = 10) %>%
add_segments(x = 3, xend = 5, y = 5, yend = 5)
これらの線の範囲をデータ座標でハードコーディングしたことに注目してください。そのため、プロットをズームおよびパンすると、線はそれらの値で「クリップ」されます。これらの線をクリップしたくない場合は、xref/yrefを紙に設定して line shape を使用します(これにより、グラフ領域がx/yではなく0-1スケールになりますデータスケール):
vline <- function(x = 0, color = "red") {
list(
type = "line",
y0 = 0,
y1 = 1,
yref = "paper",
x0 = x,
x1 = x,
line = list(color = color)
)
}
hline <- function(y = 0, color = "blue") {
list(
type = "line",
x0 = 0,
x1 = 1,
xref = "paper",
y0 = y,
y1 = y,
line = list(color = color)
)
}
plot_ly() %>%
layout(shapes = list(vline(4), hline(5)))
または、layout()の下にシェイプ(線)を追加することもできます。次の例は、垂直線を追加します。
p <- plot_ly(data, x = ~x.data, y = ~y.data, text = ~text.data, type = 'scatter',
mode = 'markers', marker = list(size = ~size.data, opacity= 0.5)) %>%
layout(shapes=list(type='line', x0= 0.2, x1= 0.2, y0=min(allyvalues), y1=max(allyvalues), line=list(dash='dot', width=1)),
title = 'This is the Title',
xaxis = list(title = "X-Axis", showgrid = TRUE),
yaxis = list(title = "Y-Axis", showgrid = TRUE))
p