Navigation

    Backtrader Community

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See: http://commonmark.org/help/

    Plotting error: Axis limits cannot be NaN or Inf

    Indicators/Strategies/Analyzers
    2
    4
    11540
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • O
      oalexandere last edited by oalexandere

      Hello there!
      The simple code get an error, could you please give an advise what's may be wrong.

      from __future__ import (absolute_import, division, print_function, unicode_literals)
      
      import backtrader as bt
      from backtrader.feeds import GenericCSVData
      
      feed = 'XAU=.csv'
      data = GenericCSVData(dataname='.\\data\\' + feed, name=feed,
                            dtformat='%d.%m.%Y',
                            separator=';',
                            datetime=0,
                            time=-1,
                            open=1,
                            high=2,
                            low=3,
                            close=4,
                            volume=-1,
                            openinterest=-1)
      
      cerebro = bt.Cerebro()
      cerebro.adddata(data)
      cerebro.run()
      cerebro.plot()
      

      Data in csv:
      Date;Open;High;Low;Close
      01.01.2010;1096.25;1096.9;1096.05;1096.35
      04.01.2010;1095.85;1123.4;1093.05;1120
      05.01.2010;1120.9;1127.7;1114.85;1118.65
      06.01.2010;1118;1140.2;1115.6;1138.5
      07.01.2010;1137.8;1138.75;1128.2;1131.9
      08.01.2010;1131.35;1139.3;1119.45;1136.1
      11.01.2010;1136.8;1161.5;1136.8;1152.6
      12.01.2010;1151.15;1158;1124.95;1127.3

      Getting error:

      Traceback (most recent call last):
      File "C:/Users/-/YandexDisk/Codes Python/Algo/Bob GS/ex2.py", line 45, in <module>
      cerebro.plot()
      File "C:\Users-\backtrader_env\lib\site-packages\backtrader\cerebro.py", line 991, in plot
      start=start, end=end, use=use)
      File "C:\Users-\backtrader_env\lib\site-packages\backtrader\plot\plot.py", line 220, in plot
      self.plotdata(data, self.dplotsover[data])
      File "C:\Users-\backtrader_env\lib\site-packages\backtrader\plot\plot.py", line 634, in plotdata
      data, opens, highs, lows, closes, volumes, vollabel)
      File "C:\Users-\backtrader_env\lib\site-packages\backtrader\plot\plot.py", line 580, in plotvolume
      ax.set_ylim(0, volylim, auto=True)
      File "C:\Users-\backtrader_env\lib\site-packages\matplotlib\axes_base.py", line 3226, in set_ylim
      top = self._validate_converted_limits(top, self.convert_yunits)
      File "C:\Users-\backtrader_env\lib\site-packages\matplotlib\axes_base.py", line 2836, in _validate_converted_limits
      raise ValueError("Axis limits cannot be NaN or Inf")
      ValueError: Axis limits cannot be NaN or Inf

      Thank you!

      P 1 Reply Last reply Reply Quote 0
      • P
        Paska Houso @oalexandere last edited by

        @oalexandere said in Plotting error: Axis limits cannot be NaN or Inf:

        File "C:\Users\osipov\backtrader_env\lib\site-packages\backtrader\plot\plot.py", line 580, in plotvolume
        

        That should be the key line since there seems to be no volume in your data. Try plotting disabling the volume.

        1 Reply Last reply Reply Quote 2
        • O
          oalexandere last edited by

          Thanks! Works

          cerebro.plot(volume=False)
          

          But in page https://www.backtrader.com/docu/plotting/plotting.html
          I found:

                  # Wether to plot volume or not. Note: if the data in question has no
                  # volume values, volume plotting will be skipped even if this is True
                  self.volume = True
          

          A little bit strange, thought changing to Flase will be automatically.

          1 Reply Last reply Reply Quote 1
          • P
            Paska Houso last edited by

            Which is probably True (written in the best Python tradition) if your volume is 0, but since you have no volume and reading the error message:

            ValueError: Axis limits cannot be NaN or Inf
            

            it seems your volume is probably given a value of Nan. It might even be that NaN evaluates slightly different between Python 2.7 and 3.x.

            1 Reply Last reply Reply Quote 0
            • 1 / 1
            • First post
              Last post
            Copyright © 2016, 2017, 2018, 2019, 2020, 2021 NodeBB Forums | Contributors