No, nunca usé JpGraph, pero tenés varios errores, de concepto y demás...
La query que estás haciendo no te cuenta "usuarios por zona", que
entiendo que es lo que querés hacer... para eso necesitás algo como
SELECT z.nombre, count(
u.id) as usuarios
FROM Zona z
JOIN hogar h on
h.id =
z.id --
h.id es el id de zona? no debería ser h.id_zona?
JOIN cliente_hogar ch on ch.id_hogar =
hogar.id
JOIN usuario u on ch.id_cliente =
u.id
GROUP BY z.nombre
Un gráfico "de líneas" no es el adecuado para lo que querés expresar:
el órden de la zonas no tiene significado (¿o sí? y si es así, ¿cual
es el orden?); querés un gráfico de barras, donde cada barra indica la
cantidad de usuarios en esa zona.
Una vez que hiciste la query, tenés que generar 2 arrays: uno contiene
los nombres de las zonas, y el otro la cantidad de usuarios:
while($row = mysqli_fetch_array($result)) {
$zonas[] = $row["nombre"];
$datos[] = $row["id"];
}
Notá que uso $zonas[] para agregar elementos al final del array; no
hace falta lo de "$zonas[$i] ... $i+1".
Y el gráfico lo tenés que armar con...
$graph->yaxis->SetTickLabels($zonas);
...
$plot = new BarPlot($datos);
...