If you don’t have data to visualize, you can load an example table:
Code import ibis import ibis.selectors as s ibis.options.interactive = True t = ibis.examples.penguins.fetch() t.head(3 ) ┏━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ species ┃ island ┃ bill_length_mm ┃ bill_depth_mm ┃ flipper_length_mm ┃ body_mass_g ┃ sex ┃ year ┃ ┡━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ string │ string │ float64 │ float64 │ int64 │ int64 │ string │ int64 │ ├─────────┼───────────┼────────────────┼───────────────┼───────────────────┼─────────────┼────────┼───────┤ │ Adelie │ Torgersen │ 39.1 │ 18.7 │ 181 │ 3750 │ male │ 2007 │ │ Adelie │ Torgersen │ 39.5 │ 17.4 │ 186 │ 3800 │ female │ 2007 │ │ Adelie │ Torgersen │ 40.3 │ 18.0 │ 195 │ 3250 │ female │ 2007 │ └─────────┴───────────┴────────────────┴───────────────┴───────────────────┴─────────────┴────────┴───────┘ Using matplotlib with Ibis Refer to the matplotlib documentation . matplotlib has not implemented the dataframe interchange protocol so it is recommended to call to_pandas() on the Ibis table before plotting.
import matplotlib.pyplot as plt grouped = t.group_by("species" ).aggregate(count= ibis._.count()) grouped = grouped.mutate(row_number= ibis.row_number().over()).select( "row_number" , ( ~ s.cols("row_number" ) & s.all () ), # see https://github.com/ibis-project/ibis/issues/6803 ) grouped ┏━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━┓ ┃ row_number ┃ species ┃ count ┃ ┡━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━┩ │ int64 │ string │ int64 │ ├────────────┼───────────┼───────┤ │ 0 │ Adelie │ 152 │ │ 1 │ Chinstrap │ 68 │ │ 2 │ Gentoo │ 124 │ └────────────┴───────────┴───────┘ # https://stackoverflow.com/questions/9101497/matplotlib-bar-graph-x-axis-wont-plot-string-values plt.figure(figsize= (6 , 4 )) plt.bar(grouped["row_number" ].to_pandas(), grouped["count" ].to_pandas()) plt.title("Penguin species counts" ) plt.xlabel("Species" ) plt.xticks(grouped["row_number" ].to_pandas(), grouped["species" ].to_pandas()) plt.ylabel("Count" ) plt.show() Back to top