Add visualization to mosaik core
As a user of mosaik it sometimes can be difficult to understand what is called in which order or which simulator takes what amount of time for its calculation. We have some graphs which help fining that out. Currently, they are quite hidden and difficult to use in another repository. We want to have them in mosaik core to have them ready to use.
Details
- Move the functions to the mosaik core project and make them usable there
- If we would have it published separately to pypi we would need to ensure via versioning that the execution graph and the visualization tool are compatible, which would make the development more complicated for us
- Attention: Don't make the installation of matplotlib default, because it results in many additional packages which are installed and the visualization may be a more rarely used tool.
- As far as possible update the graphs with the following points or create new issues which can tackle these changes later
- Dataflow Graph: Show weak and time-shifted connections and label them with the size of the shift
- Execution Graph: Try to improve clarity of the graph. Possible ideas: Different colours for the connections, e.g. using the colour from the origin of the arrow. Make the connections a little curved so that they don't go through another point if two points above each other are connected and one point lies directly in-between.
- Execution Graph new: Keep out for now. Installation, at least under Windows, is painful, as the C++ compiler needs to be installed
- Execution time per simulator: Put all lines in one graph (in different colours, dashed, etc.). X-axis should be integer.
- Execution time: It's already very good, keep it.
- Further ideas: provide the user with the option to define the time frame which shall be visualized. It can be that they are of different relevance for the user.