pvlib.tracking.singleaxis(apparent_zenith, apparent_azimuth, axis_tilt=0, axis_azimuth=0, max_angle=90, backtrack=True, gcr=0.2857142857142857)[source]

Determine the rotation angle of a single axis tracker using the equations in [1] when given a particular sun zenith and azimuth angle. backtracking may be specified, and if so, a ground coverage ratio is required.

Rotation angle is determined in a panel-oriented coordinate system. The tracker azimuth axis_azimuth defines the positive y-axis; the positive x-axis is 90 degress clockwise from the y-axis and parallel to the earth surface, and the positive z-axis is normal and oriented towards the sun. Rotation angle tracker_theta indicates tracker position relative to horizontal: tracker_theta = 0 is horizontal, and positive tracker_theta is a clockwise rotation around the y axis in the x, y, z coordinate system. For example, if tracker azimuth axis_azimuth is 180 (oriented south), tracker_theta = 30 is a rotation of 30 degrees towards the west, and tracker_theta = -90 is a rotation to the vertical plane facing east.

  • apparent_zenith (float, 1d array, or Series) – Solar apparent zenith angles in decimal degrees.

  • apparent_azimuth (float, 1d array, or Series) – Solar apparent azimuth angles in decimal degrees.

  • axis_tilt (float, default 0) – The tilt of the axis of rotation (i.e, the y-axis defined by axis_azimuth) with respect to horizontal, in decimal degrees.

  • axis_azimuth (float, default 0) – A value denoting the compass direction along which the axis of rotation lies. Measured in decimal degrees East of North.

  • max_angle (float, default 90) – A value denoting the maximum rotation angle, in decimal degrees, of the one-axis tracker from its horizontal position (horizontal if axis_tilt = 0). A max_angle of 90 degrees allows the tracker to rotate to a vertical position to point the panel towards a horizon. max_angle of 180 degrees allows for full rotation.

  • backtrack (bool, default True) – Controls whether the tracker has the capability to “backtrack” to avoid row-to-row shading. False denotes no backtrack capability. True denotes backtrack capability.

  • gcr (float, default 2.0/7.0) – A value denoting the ground coverage ratio of a tracker system which utilizes backtracking; i.e. the ratio between the PV array surface area to total ground area. A tracker system with modules 2 meters wide, centered on the tracking axis, with 6 meters between the tracking axes has a gcr of 2/6=0.333. If gcr is not provided, a gcr of 2/7 is default. gcr must be <=1.


  • dict or DataFrame with the following columns

  • * tracker_theta (The rotation angle of the tracker.) – tracker_theta = 0 is horizontal, and positive rotation angles are clockwise.

  • * aoi (The angle-of-incidence of direct irradiance onto the) – rotated panel surface.

  • * surface_tilt (The angle between the panel surface and the earth) – surface, accounting for panel rotation.

  • * surface_azimuth (The azimuth of the rotated panel, determined by) – projecting the vector normal to the panel’s surface to the earth’s surface.


[1] Lorenzo, E et al., 2011, “Tracking and back-tracking”, Prog. in Photovoltaics: Research and Applications, v. 19, pp. 747-753.