-
-
Notifications
You must be signed in to change notification settings - Fork 7.9k
feature request: support passing DataFrames to table.table #28726
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I would not consider this a bug a the input is documented as a 2D list of strings (https://matplotlib.org/stable/api/table_api.html#matplotlib.table.table) . That said, this may be a reasonable feature request as I don't think it would be too hard to detect if we were passed a |
@dawnwangcx You are welcome to submit you proposal as a pull request. |
This is what |
I wasn't aware of this. Nevertheless, I think it's nice to support this natively in matplotlib. Not any priority, but if somebody wants to contribute this, I'm fine with it:
That said, we should align our implementation with the pandas one. |
Bug summary
When trying to input a dataframe to a table, it will raise keyerror. Since cellText [0] will not give the first row of the dataframe and thus not returning the correct column length. So, I made a modification to recognize cellText as dataframe.
contact: [email protected]
Code for reproduction
Actual outcome
Traceback (most recent call last):
File "C:\Users\053232\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\indexes\base.py", line 3653, in get_loc
return self._engine.get_loc(casted_key)
File "pandas_libs\index.pyx", line 147, in pandas._libs.index.IndexEngine.get_loc
File "pandas_libs\index.pyx", line 176, in pandas._libs.index.IndexEngine.get_loc
File "pandas_libs\hashtable_class_helper.pxi", line 7080, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas_libs\hashtable_class_helper.pxi", line 7088, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 0
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "c:/Users/Downloads/suspension_check.py", line 147, in
generate_image(suspended_etfs,'suspended_etfs')
File "c:/Users/Downloads/suspension_check.py", line 106, in generate_image
tbl = table.table(ax, df, loc='center')
File "C:\Users\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\table.py", line 754, in table
cols = len(cellText[0])
File "C:\Users\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\frame.py", line 3761, in getitem
indexer = self.columns.get_loc(key)
File "C:\Users\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\indexes\base.py", line 3655, in get_loc
raise KeyError(key) from err
KeyError: 0
Expected outcome
return a table contains a dataframe
Additional information
Check we have some cellText
Operating system
No response
Matplotlib Version
3.7.5
Matplotlib Backend
No response
Python version
No response
Jupyter version
No response
Installation
pip
The text was updated successfully, but these errors were encountered: