Releases: neo4j/python-graph-visualization
Releases · neo4j/python-graph-visualization
v1.4.0
Changes in 1.4.0
Breaking changes
New features
Bug fixes
- Fixed a bug in displaying the
Download,SelectionandLayoutbuttons, which was introduced in 1.2.0.
Improvements
- Support
neo4j.EagerResultin thefrom_neo4jintegration which is the default return type byneo4j.Driver.execute_query(). - Detect light/dark theme changes and adapt rendering unless theme was explicitly set. Before the theme would only be checked on the first render.
Other changes
v1.3.0
Changes in 1.3.0
Breaking changes
New features
- Add convenience method
add_dataandremove_datatoGraphWidget. - Added a selection button to the toolbar.
- Added a layout button to the toolbar if
VG.render_widgetis used. - Support the new circular layout.
Bug fixes
- Fixed a bug with the theme detection inn VSCode.
Improvements
- Allow setting the theme manually in
VG.render(theme="light")andVG.render_widget(theme="dark"). - Use typed nodes and relationship traitlets in GraphWidget, i.e., list of Node and Relationship instead of dictionaries.
rendernow allows to passlayoutas a string as well. Previously expected to be a typedneo4j_viz.Layout.- Fixed rendering in Marimo notebooks
Other changes
v1.2
Changes in 1.2.0
Breaking changes
- Removed the
show_hover_tooltipparameter fromrender(). The visualization now shows a detail side panel for selected nodes and relationships, replacing the previous hover tooltip. - Nodes are colored by default by their caption. Use
VG.color_nodes(field="caption", colors=[neo4j_viz.colors.NEO4J_COLORS_DISCRETE[0]])to apply the previous coloring.
New features
- Nodes are now automatically colored by their caption (label) in the JavaScript visualization. This works out of the box without needing to call
color_nodes(), and applies regardless of how the graph was created. Explicit colors set viacolor_nodes()or directly on nodes take precedence. There is no longer a limit on the number of unique labels for auto-coloring. - New
Zoom to fitbutton in the visualization. - New
render_widget()method onVisualizationGraphreturns aGraphWidget(anywidget) for interactive two-way data sync in Jupyter environments (JupyterLab, Notebook 7, VS Code, Colab).
Improvements
- Migrated JavaScript visualization from
@neo4j-nvl/baseto@neo4j-ndl/react-graphReact component. - Migrated build system from Webpack to Vite.
- Added anywidget integration as the primary rendering path for Jupyter environments.
v1.1.0
Changes in 1.1.0
Breaking changes
New features
- Added a new utility function to color relationships
VisualizationGraph.color_relationships - Added a new utility function to resize relationships
VisualizationGraph.resize_relationships
Bug fixes
Improvements
Other changes
v1.0.0
Changes in 1.0.0
Our first major release 🎉
The API stabilized and we have no other changes between 0.7.0 and 1.0.0.
Docs will be available at https://neo4j.com/docs/python-graph-visualization/
v0.7.0
Changes in 0.7.0
Breaking changes
- Removed
tableproperty from nodes and relationships returned fromfrom_snowflake, the table is represented by thecaptionfield. - Changed default value of
overrideparameter inVisualizationGraph.color_nodes()fromFalsetoTrue. The method now overrides existing node colors by default. To preserve existing colors, explicitly passoverride=False.
New features
- Added
set_node_captions()convenience method toVisualizationGraphfor setting node captions from a field or property.
Improvements
- Truncate large property values in the rendered output.
v0.6.0
Changes in 0.6.0
Breaking changes
- Change API of integrations to only provide basic parameters. Any further configuration should happen on the Visualization Graph object:
- Don't derive fields from properties. Use utility functions on the VisualizationGraph instead or set them manually on the node/relationship objects (VG.nodes/VG.relationships). This affects
from_neo4j,from_gds,from_gql_create,from_pandas,from_snowflake. from_gdsrenameadditional_node_propertiestonode_properties- Drop parameters
size_property,node_radius_min_max. UseVG.resize_nodes(property=...)instead. This affectsfrom_gds,from_neo4j,from_pandas,from_gql_create,from_snowflake.
- Don't derive fields from properties. Use utility functions on the VisualizationGraph instead or set them manually on the node/relationship objects (VG.nodes/VG.relationships). This affects
New features
- Allow to include db node properties in addition to the properties in the GDS Graph. Specify
db_node_propertiesinfrom_gds.
Bug fixes
- fixed a bug in
from_neo4j, where the node size would always be set to thesizeproperty. - fixed a bug in
from_neo4j, where the node caption would always be set to thecaptionproperty. - Color nodes in
from_snowflakeonly if there are less than 13 node tables used. This avoids reuse of colors for different tables. - fixed a bug in
from_gds, where properties of type list could not be imported.
Improvements
- Validate fields of a node and relationship not only at construction but also on assignment.
- Allow resizing per node property such as
VG.resize_nodes(property="score"). - Color nodes by label in
from_gdsandfrom_gql_create. - Add
tableproperty to nodes and relationships created byfrom_snowflake. This is used as a default caption.
v0.5.0
v0.4.2
Changes in 0.4.2
Bug fixes
- Fixed a bug with
from_gdswhere graphs with different relationship types would fail if they had different properties. - Fixed a bug with
from_gdswhere the additional property would be skipped if its also defined as the size property.
v0.4.1
Changes in 0.4.1
Breaking changes
- Relationship types are now added as the default caption on relationships when fetched using
from_gds
New features
- Allow passing a
neo4j.Driverinstance as input tofrom_neo4j, in which case the driver will be used internally to fetch the graph data using a simple query - The
rel_dfsparameter offrom_dfsis now optional, allowing for loading a graph with only nodes and no relationships
Bug fixes
- Make sure that temporary internal node properties are not included in the visualization output
- Fixed bug where loading a graph with
from_gdswhere all node or relationship properties are not present on every entity would result in an error