使用R限制高位图中X轴的刻度

时间:2016-01-13 15:20:00

标签: r highcharts shiny axis

我正在尝试在我在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

Image 1 image2

2 个答案:

答案 0 :(得分:2)

您可以尝试新的包highcharter,其中包含一些快捷方式功能,用于创建图表(使用highstock)给定日期和值。查看链接http://jkunst.com/highcharter/oldindex.html#time-series

enter image description here

答案 1 :(得分:1)

您可以使用minTickInterval

xAxis选项
minTickInterval: NumberSince
     

轴值允许的最小刻度间隔。比如说   使用每日数据放大轴,这可用于防止   轴显示小时。默认为两者之间的最近距离   轴上的点。

来自http://api.highcharts.com/highcharts#xAxis.minTickInterval

或者,使用tickInterval设置自定义滴答数:

tickInterval: Number
     

以轴为单位的刻度线的间隔。当为null时,勾选   计算间隔大致遵循tickPixelInterval   线性和日期时间轴。在分类轴上,为null tickInterval   将默认为1,一个类别。 请注意,日期时间轴是基于的   以毫秒为单位,例如,一天的间隔表示为   24 * 3600 * 1000

来自http://api.highcharts.com/highcharts#xAxis.tickInterval

因此,在您的情况下,也许您应该使用每周刻度,即tickInterval = 7* 24 * 3600 * 1000