phpmysqlpchart

pChart timeline with gaps


I want to use pChart to render a simple line graph of a sample value vs. the date. I have the basics working, but how do I handle gaps in the date? The samples are already averaged by the quarter year, but not every quarter has a sample. Sometimes it skips a quarter or two.

Currently, these gaps are compressed on the X axis one after another, instead of being spaced out in their natural order in a number line.

The data is coming from a MySQL database. I'm probably missing something simple. Can anyone help?

#Array variables.
$date       = "";
$value      = "";

#Fetch the database rows, and sort them into arrays.
while ($row = mysql_fetch_array($result))
{
    $date[] = $row["date"];
    $value[]    = $row["value"];
}

#Create a chart data object.
$MyData = new pData();

#Pass the data to the chart.
$MyData->addPoints($date, "Date");
$MyData->addPoints($value, "Value");

#Configure labels.
$MyData->setAxisName(0,"Value");

#Set the date as the X axis.
$MyData->setAbscissa("Date");
$MyData->setAbscissaName("Date");

Solution

  • This is trying to use the drawLineChart() function, when it should be using the drawScatterLineChart() function. The differences aren't very well explained, but are crucial.

    A "Line Chart" doesn't use a number line for its independent axis. It's used for charts with a non-numerical axis, like months of the year. This axis doesn't register gaps like a natural number line would, because text doesn't necessarily have values which can be ordered in a logical way.

    The "Scatter Line Chart" is a normal XY chart with proper number lines on its axes. It responds to gaps in values like one would expect. This should really be the default example in the documentation.