2017-11-14 9 views
1

を変更することはできません。線種は、私は一例として、以下のデータをプロットを作成したいelement_line

library(data.table) 
library(ggplot2) 
library(plotly) 

Data <- data.table(Datum = c("2017-11-01","2017-11-02","2017-11-03","2017-11-04","2017-11-05","2017-11-06","2017-11-07","2017-11-08","2017-11-09","2017-11-10"),Index = c(200,250,230,210,190,215,216,250,260,245), Long = c(c(250,220,225,215,240,255,256,266,223,222))) 
Data$Datum <- as.Date(Data$Datum, format = "%Y-%m-%d") 

startdate <- min(Data$Datum) 
enddate <- max(Data$Datum) 

plot <- ggplot(Data, aes(Datum)) + 
    geom_line(aes(y = Index, colour = "Index"), size = 0.5, alpha = 0.5) + 
    geom_line(aes(y = Long, colour = "Long"), size = 0.5, alpha = 0.5) + 
    theme(panel.background = element_rect(fill = "white")) + 
    theme(panel.grid.major.x = element_blank(), panel.grid.major.y = element_line(size = 0.5, colour = "grey", linetype = "dotted")) + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
    scale_y_continuous(breaks=seq(0,300,20)) + 
    scale_x_date(breaks = seq(as.Date(startdate), as.Date(enddate), by="2 month"), date_labels = "%m %Y") + 
    ylab("") + 
    xlab("") 


plot <- ggplotly(plot) 
print(plot) 

chart

しかし、あなたは、グラフでXグリッドの線種を見ることができるようにlinetype = "dotted"

私のアプローチでは、線種を変更するにはどうすればよいですか?

+1

試してみてください – missuse

+1

うん、ちょっとプロットパッケージ(またはplot.ly自体?)は、私がソースを読み込んだときに線種を変更する能力がないようです...:https://github.com/ropensci/plotly /blob/f5dd6ae20d0e266f456777828349b76f0b19ab81/R/ggplotly.R#L7 03-L706たぶんあなたはレポに問題を提出するべきです。 – yutannihilation

+0

これはいくつかの回避策を提供します:http://sape.inf.usi.ch/quick-reference/ggplot2/linetype – seeellayewhy

答えて

0

あなたのコードから、プロットはggplot内で必要に応じて出て​​きますが、一旦プロットされたら点線は失われていることが分かります。コメント内で述べたように、これはplotlyという制限のようです。ただし、これは回避策です。

ggplotly機能はこの問題を解決する簡単な方法はgeom_hline関数を使用して以下のように、Yの行を削除し、ちょうどいくつかの手動で指定された水平線を追加することで、geom_line関数から美学を扱うことができるように:

plot <- ggplot(Data, aes(Datum)) + 
    geom_hline(yintercept =c(200, 220, 240, 260), size = 0.5, colour = "grey", linetype = "dotted") + 
    geom_line(aes(y = Index, colour = "Index"), size = 0.5, alpha = 0.5) + 
    geom_line(aes(y = Long, colour = "Long"), size = 0.5, alpha = 0.5) + 
    scale_y_continuous(breaks=seq(0,300,20)) + 
    ylab("") + 
    xlab("") + 
    theme(panel.background = element_rect(fill = "white"), 
     panel.grid.major.x = element_blank(), 
     panel.grid.major.y = element_blank()) 

plot <- ggplotly(plot) 
print(plot) 

enter image description here

geom_line関数の詳細については、hereを参照してください。

min.plot <- roundUP(min(Data$Index,Data$Long),10) - 20 
max.plot <- max(Data$Index,Data$Long) + 20 
y.axis <- seq(from = min.plot, to = max.plot, by = 10) 

とにgeom_hline引数を編集します:

代わりに、手動手順を指定する、あなたは自動的にシーケンスを、最大と最小のy値を求める作成することにより、行間隔を決定するために追加することができます

geom_hline(yintercept = y.axis, size = 0.5, colour = "grey", linetype = "dotted") 
+1

これは、ありがとうございます。しかし、私は線の位置を定義する必要があるので、柔軟性が低下します。これは少なくとも0から始まりmax + 20で終わるシーケンスを作成することでこれを少し調整することができました。これは少なくとも私がいくつかの行を簡単に追加できるようにしています: 'max < - max(Data $ Index)+ 20' +' y (yintercept = y.axis、size = 0.25、color = "gray"、linetype = "dotted") ' – MelBourbon

+0

グッドアイデア。これを編集として回答に追加してください。 –

関連する問題