Fix visualization error for PropertyLayers on HexGrids. Add tranpose …#2868
Merged
Sahil-Chhoker merged 2 commits intomesa:mainfrom Oct 31, 2025
Merged
Fix visualization error for PropertyLayers on HexGrids. Add tranpose …#2868Sahil-Chhoker merged 2 commits intomesa:mainfrom
Sahil-Chhoker merged 2 commits intomesa:mainfrom
Conversation
…operation before ravel operation.
|
Performance benchmarks:
|
Sahil-Chhoker
approved these changes
Oct 29, 2025
Collaborator
Sahil-Chhoker
left a comment
There was a problem hiding this comment.
@flucco, Thanks for this!
Member
|
@Sahil-Chhoker this can be merged, right? Be sure to add a label to the PR so it ends up in the right place in the release notes (“bug”) in this case. |
Collaborator
|
@EwoutH Yes, this PR can be merged, do you want me to do it? |
Member
|
Yes, go ahead! |
EwoutH
pushed a commit
that referenced
this pull request
Oct 31, 2025
Member
|
We released Mesa 3.3.1 with this bugfix, so you should now be able to update Mesa ( |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
(New pull request that includes just the one commit)
Summary
Fix a visualization error for PropertyLayers on HexGrids where color values were displayed in the wrong places. Add a transpose operation to put the color values in the right order.
Bug / Issue
Issue 2859. I found that when trying to display PropertyLayers on Hexagonal Grids, color values are consistently shown in the wrong places on the grid. The visualizations for hexagonal grids look dramatically different from the visualizations for orthogonal grids. You would expect the visualizations to look similar besides the small differences caused by the hexagonal cell layout.
Implementation
The issue was in the draw_propertylayer function in matplotlib_backend.py. The code for the HexGrid visualization flattened the W x H PropertyLayer data into a 1D array, then matched those values to a collection of hexagonal grid cells arranged in H x W order. The different orders led to incorrect placement of values on the grid.
The one-line fix is to add a transpose operation (.T) before the ravel operation that flattens the data. This creates a 1D array of color values in the correct H x W order. I picked this approach because it's simple and matches the implementation used for orthogonal grids. Now, all cases use a simple transpose operation to adjust the data for graphing purposes.
Testing
I tested this fix in a modified version of the Sugarscape example, described in the issue and available in [this branch] (https://github.com/flucco/mesa/tree/bug_example) of my fork. I used the original sugarscape map, 50x50 modifications of that map which added asymmetrical elements, and modified maps that had varied W x H ratios.
Before the fix, the values aren’t shown in the right places on the grid. Agents should be in white squares due to consumption of resources, but the white squares appear in other locations. Here is the comparison at timestep 1 of Orthogonal and Hexagonal behaviors using the 60x40 grid. (Note: I changed the size of the agents to 7 and alpha to 0.8 as it's easier to see the color values). See also the examples shown in the issue.
Orthogonal:
Hexagonal:
Note the incorrect placement of the color values, as shown by the differences from the orthogonal grid and how the agents are not in white squares. Instead, the white squares that should correspond to the agents appear elsewhere in the grid.
After the fix, the behavior is correct in all cases I tested, and closely resembles the visualization of the original orthogonal model.
Hexagonal after fix:
I tested the fixed code on all the basic tests given and ran the formatting checks just to make sure.
Additional Notes