thanks a lot for your question.
First, about the viewport of the visualization - this is definitely a bug and shouldn't happen, which version and browser are you using? I will create a Github issue for this if you haven't already. It's possible that the problem is fixed with the upcoming 7.5 release because we changed a little how the graph is rendered, otherwise I can make sure it will get fixed with 7.6
In general for getting started with Graph: You probably have already checked out the documentation on our Website. Besides that if you search for "Kibana Graph" on youtube you will find multiple screencasts of how you can use the Graph UI. I especially recommend the videos of @Mark_Harwood .
In Graph each vertex is a specific term of a single field. A connection between to vertices means the terms of the fields of the vertices co-occur in the documents of your index. You can freely configure the fields you want to use as a source for vertices added to your Graph, so the Graph app is not bound to a specific mapping. About your use case to map network data (in case you ingest data from multiple servers talking to each other) - the way Graph works means if you have two separate fields for source ip and destination ip of a network traffic event, you will get two separate vertices even though they belong to the same host in the network. To create a graph where the host is shown by a single vertex for incoming and outgoing traffic, it makes sense to create a "role less field" that contains an array of both the destination and the source ip. This can be done by using the copy_to parameter in the mapping.
About geo-information: Graph is currently not especially good at handling geo data, it's only operating on specific terms of fields. That's fine for working with e.g. city names or country names, but if you want to show events where they happened on a map, maybe the Maps app is a better fit.
@Mark_Harwood do you have other recommendations to get started with Graph in the network data use case?