The data source for the graph is the Zigbee data the hub directly sees and reports at the /hub/zigbee/getChildAndRouteInfo endpoint. At any point in time that will only show the (up to) 32 devices directly connected to the hub, plus the last 16 (IIRC) routers the hub has seen, and the last 16 routes (IIRC) to non-directly connected neighbors.
Thus, when you first open the graph, you will only see a fraction of your mesh (if it is large). I only get about 42 out of 144 devices shown on my mesh.
The JavaScript code showing the graph of the mesh will continuously reload the getChildAndRouteInfo data, and will continually add to the graph as it sees new devices in the report.
E,g., I left the graph open for 6 hours and it had grown to showing 120 of my devices. That's because many of them are sleepy battery devices that only wakeup and send a message once in a while (some only once a day). It's important to note that the data on the graph for sleepy devices might be very stale.
It might be better if the hub (or an app feeding the graph) was saving the data from getChildAndRouteInfo internally and building up a last-known-route for each device. That way it would show a better map the moment you open it (albeit with possibly stale information). But that's not how it works today.
If you want a full picture of the mesh, I think you still currently need an xbee device (Everything Xbee).