title: How do I set QChart axis ticks explicitly?
body: <p>Using the <a href="http://doc.qt.io/qt-5/qtcharts-zoomlinechart-example.html" rel="noreferrer">Zoom Line Example</a> I have made a Python <code>QChartView</code> class that can scroll with the arrow keys and zoom with the plus and minus keys. (see my code below).</p>
  
  <p>When I scroll left I would expect that the grid lines and axis ticks scroll the same amount as the data. However, only the data (the QLineSeries) scrolls to the left. The 5 grid lines remain at the same positions but their tick values are updated. This is undesirable as the new tick values can be anything.</p>
  
  <p>I have looked in the documentation but could not find how to make the grid  scroll together with the data. Am I missing something?</p>
  
  <p>I would also like to be able to set the ticks to explicit values (so that I can perhaps implement the scrolling behavior myself). Is it possible to set the axis tick values to specific values?</p>
  
  <p>My example code: </p>
  
  <pre><code>import sys
  from math import pi, sin, sqrt
  
  from PyQt5.QtChart import QLineSeries, QChart, QChartView
  from PyQt5.QtCore import Qt
  from PyQt5.QtWidgets import QApplication
  
  class ZoomPanChartView(QChartView):
      """ QChartView that can zoom/pan with the keys
      """
      def __init__(self, chart):
          super().__init__(chart)
  
          self.zoomFactor = sqrt(2) # QCharts default is 2
          self.panPixels = 10
  
      def keyPressEvent(self, keyEvent):
          """ Panning (scrolling) is done with the arrow keys. 
              Zooming goes with the plus and minus keys.
              The '=' key resets.
          """
          key = keyEvent.key()
  
          if key == Qt.Key_Equal:
              self.chart().zoomReset()
          if key == Qt.Key_Plus:
              self.chart().zoom(self.zoomFactor)
          elif key == Qt.Key_Minus:
              self.chart().zoom(1/self.zoomFactor)
          elif key == Qt.Key_Left:
              self.chart().scroll(-self.panPixels, 0)
          elif key == Qt.Key_Right:
              self.chart().scroll(+self.panPixels, 0)
          elif key == Qt.Key_Up:
              self.chart().scroll(0, +self.panPixels)
          elif key == Qt.Key_Down:
              self.chart().scroll(0, -self.panPixels)
          elif key == Qt.Key_0:
              self.chart().axisX().applyNiceNumbers() # changes the range
          else:
              super().keyPressEvent(keyEvent)
  
  
  def main():
      app = QApplication(sys.argv)
      chart = QChart()
  
      series = QLineSeries()
      for i in range(0, 100):
          x = i * pi / 20
          y = sin(x)
          series.append(x, y)
  
      chart.addSeries(series)
      chart.createDefaultAxes()
      chart.axisY().setRange(-1, 1)
      chart.legend().hide()
  
      chartView = ZoomPanChartView(chart)
      chartView.show()
      chartView.resize(400, 300)
      sys.exit(app.exec_())
  
  if __name__ == "__main__":
      main()    
  </code></pre>