我正在尝试使用两条水平线绘制dygraph plot
(感谢Create a barplot in R using dygraphs package的答案的条形图),但不在整个OX轴范围内
我现在拥有的是:
我想拥有的是:
唯一认为我知道如何获得的是(但这不是我想要的):
有人知道有可能获得我的目标吗?我会非常乐意为你提供帮助!
我的代码重现情节:
library("dplyr")
library("data.table")
library("dygraphs")
library("htmlwidgets")
# data:
graph_data <- structure(c(0, 584.5, 528.5, 601.3, 336.8, 0), .Dim = c(6L, 1L
), index = structure(c(1448928000, 1451606400, 1454284800, 1456790400,
1459468800, 1462060800),
tzone = "UTC", tclass = c("POSIXct", "POSIXt")),
.indexCLASS = c("POSIXct", "POSIXt"), tclass = c("POSIXct", "POSIXt"),
.indexTZ = "UTC", tzone = "UTC",
.Dimnames = list(NULL, "ile"), class = c("xts", "zoo"))
# > graph_data
# ile
# 2015-12-01 0.0
# 2016-01-01 584.5
# 2016-02-01 528.5
# 2016-03-01 601.3
# 2016-04-01 336.8
# 2016-05-01 0.0
getMonth <- 'function(d){
var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
return monthNames[d.getMonth()];
}'
getMonthDay <- 'function(d) {
var monthNames = ["Sty", "Luty", "Mar", "Kwi", "Maj", "Cze","Lip", "Sie", "Wrz", "Paź", "Lis", "Gru"];
date = new Date(d);
return monthNames[date.getMonth()]+ \" \" +date.getFullYear(); }'
# set limit:
limit <- 600
# drow a plot:
dygraph(graph_data) %>%
dyOptions(useDataTimezone = TRUE, plotter =
"function barChartPlotter(e) {
var ctx = e.drawingContext;
var points = e.points;
var y_bottom = e.dygraph.toDomYCoord(0); // see http://dygraphs.com/jsdoc/symbols/Dygraph.html#toDomYCoord
// This should really be based on the minimum gap
var bar_width = 2/3 * (points[1].canvasx - points[0].canvasx);
ctx.fillStyle = \"blue\";
// Do the actual plotting.
for (var i = 0; i < points.length; i++) {
var p = points[i];
var center_x = p.canvasx; // center of the bar
ctx.fillRect(center_x - bar_width / 2, p.canvasy,
bar_width, y_bottom - p.canvasy);
ctx.strokeRect(center_x - bar_width / 2, p.canvasy,
bar_width, y_bottom - p.canvasy);
}
}"
) %>%
dyLimit(limit, color = "red") %>%
dyRangeSelector() %>%
dyAxis("y", valueRange = c(0, limit),
label = "ile") %>%
dyAxis("x", axisLabelFormatter = JS(getMonthDay),
valueFormatter=JS(getMonthDay))