[英]Limit ticks on X axis in highcharts with R
我正在尝试在我在R中创建的高图图上获得正确的日期X轴。当我使用变量作为Date
highcharts
似乎不理解它,当我转换为字符时,所有X标签都显示出来,这不是看起来不错。 使用rCharts包中的NVD3图表,可以选择reduceXticks=TRUE
来解决这个问题。 也许有一个等价的?
例:
# data
df <- data.frame(x = 1:100, y = rnorm(100), s = 100*rnorm(100), z = 10*rnorm(100),Date=
as.POSIXct(seq(Sys.Date(), by = 1, length.out = 100)))
# chart 1
h1 <- Highcharts$new()
h1$xAxis(categories=df$Date,type = "datetime")
h1$yAxis(list(list(title = list(text = 'x'), opposite = FALSE),
list(title = list(text = 'y'), opposite = TRUE),
list(title = list(text = 's'), opposite = TRUE)))
h1$series(name = 'x', type = 'line', color = '#000099',
data = df$x)
h1$series(name = 'y', type = 'line', color = '#FF0000',
data = df$y, yAxis=1)
h1$series(name = 's', type = 'line', color = '#006600',
data = df$s, yAxis=2)
h1
#-------------------------------------------------------------#
h1 <- Highcharts$new()
h1$xAxis(categories=as.character(df$Date),type = "datetime")
h1$yAxis(list(list(title = list(text = 'x'), opposite = FALSE),
list(title = list(text = 'y'), opposite = TRUE),
list(title = list(text = 's'), opposite = TRUE)))
h1$series(name = 'x', type = 'line', color = '#000099',
data = df$x)
h1$series(name = 'y', type = 'line', color = '#FF0000',
data = df$y, yAxis=1)
h1$series(name = 's', type = 'line', color = '#006600',
data = df$s, yAxis=2)
h1
您可以尝试新的包highcharter
,其中包含一些快捷方式功能,用于创建图表(使用highstock)给定日期和值。 查看链接http://jkunst.com/highcharter/oldindex.html#time-series
您可以使用xAxis
的minTickInterval
选项
minTickInterval: NumberSince
轴值允许的最小刻度间隔。 例如,在使用每日数据放大轴时,可以使用此选项来防止轴显示小时数。 默认为轴上两点之间的最近距离。
来自http://api.highcharts.com/highcharts#xAxis.minTickInterval 。
或者,使用tickInterval
设置自定义滴答tickInterval
:
tickInterval: Number
以轴为单位的刻度线的间隔。 当为null时,计算滴答间隔大致遵循线性和日期时间轴上的tickPixelInterval。 在分类轴上,null tickInterval将默认为1,一个类别。 请注意,日期时间轴基于毫秒,因此例如一天的间隔表示为24 * 3600 * 1000 。
来自http://api.highcharts.com/highcharts#xAxis.tickInterval 。
因此,在您的情况下,也许您应该使用每周滴答,即tickInterval = 7* 24 * 3600 * 1000
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.