Skip to content

ValueError: operands could not be broadcast together with shapes (256,4) (256,3) #600

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
JasonGross opened this issue Apr 2, 2024 · 1 comment · May be fixed by #601
Open

ValueError: operands could not be broadcast together with shapes (256,4) (256,3) #600

JasonGross opened this issue Apr 2, 2024 · 1 comment · May be fixed by #601

Comments

@JasonGross
Copy link

colab

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import tikzplotlib
from matplotlib.colors import LinearSegmentedColormap

# Define the custom colormap
colors = [(0, '#ff0000'),
          (0.25, '#ff8247'),
          (0.5, '#ffffff'),
          (0.75, '#ffc100'),
          (1, '#ff9c05')]
cmap_name = 'my_custom_cmap'
cmap = LinearSegmentedColormap.from_list(cmap_name, colors, N=256)

# Generate some sample data for the heatmap
data = np.random.rand(10, 10)

fig, ax = plt.subplots()
sns.heatmap(
    data,
    ax=ax,
    center=0.0,
    cmap=cmap,
    cbar_kws={"label": "Scale"},
)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_title("title")
plt.show()
tikzplotlib.save("heatmap_custom_colormap.tex", fig)

gives an error

---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-9-e79bfff78935> in <cell line: 31>()
     29 ax.set_title("title")
     30 plt.show()
---> 31 tikzplotlib.save("heatmap_custom_colormap.tex", fig)
     32 

6 frames

/usr/local/lib/python3.10/dist-packages/tikzplotlib/_save.py in save(filepath, encoding, *args, **kwargs)
    260     :returns: None
    261     """
--> 262     code = get_tikz_code(*args, filepath=filepath, **kwargs)
    263     with open(filepath, "w", encoding=encoding) as f:
    264         f.write(code)

/usr/local/lib/python3.10/dist-packages/tikzplotlib/_save.py in get_tikz_code(figure, filepath, axis_width, axis_height, textsize, tex_relative_path_to_data, externalize_tables, override_externals, externals_search_path, strict, wrap, add_axis_environment, extra_axis_parameters, extra_groupstyle_parameters, extra_tikzpicture_parameters, extra_lines_start, dpi, show_info, include_disclaimer, standalone, float_format, table_row_sep, flavor)
    211 
    212     # gather the file content
--> 213     data, content = _recurse(data, figure)
    214 
    215     # Check if there is still an open groupplot environment. This occurs if not

/usr/local/lib/python3.10/dist-packages/tikzplotlib/_save.py in _recurse(data, obj)
    337 
    338         if isinstance(child, mpl.axes.Axes):
--> 339             ax = _axes.Axes(data, child)
    340 
    341             if ax.is_colorbar:

/usr/local/lib/python3.10/dist-packages/tikzplotlib/_axes.py in __init__(self, data, obj)
    157         colorbar = _find_associated_colorbar(obj)
    158         if colorbar:
--> 159             self._colorbar(colorbar, data)
    160 
    161         if self.is_subplot:

/usr/local/lib/python3.10/dist-packages/tikzplotlib/_axes.py in _colorbar(self, colorbar, data)
    420             colorbar_styles.append("ylabel={" + colorbar_ylabel + "}")
    421 
--> 422         mycolormap, is_custom_cmap = _mpl_cmap2pgf_cmap(
    423             colorbar.mappable.get_cmap(), data
    424         )

/usr/local/lib/python3.10/dist-packages/tikzplotlib/_axes.py in _mpl_cmap2pgf_cmap(cmap, data)
    670         cmap, mpl.colors.ListedColormap
    671     ), "Only LinearSegmentedColormap and ListedColormap are supported"
--> 672     return _handle_listed_color_map(cmap, data)
    673 
    674 

/usr/local/lib/python3.10/dist-packages/tikzplotlib/_axes.py in _handle_listed_color_map(cmap, data)
    792     }
    793     for mpl_cm, pgf_cm in cm_translate.items():
--> 794         if cmap.colors == plt.get_cmap(mpl_cm).colors:
    795             is_custom_colormap = False
    796             return (pgf_cm, is_custom_colormap)

ValueError: operands could not be broadcast together with shapes (256,4) (256,3) 
@JasonGross
Copy link
Author

Note that removing the explicit fig object gets rid of the error

@JasonGross JasonGross linked a pull request Apr 2, 2024 that will close this issue
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant