@@ -1875,29 +1875,33 @@ def _get_converter(self, x=None, y=None, kind=None, **kwds):
18751875
18761876 # Find columns which should be converted for LazyDataFrame and DataFrame
18771877 if isinstance (self ._data , (pl .LazyFrame , pl .DataFrame )):
1878+ try :
1879+ column_names = self ._data .collect_schema ().names ()
1880+ except Exception : # Maybe not always supported, has been there since 1.7.1
1881+ column_names = list (self ._data .columns )
1882+
18781883 if params .get ('hover_cols' ) == 'all' :
1879- columns = list ( self . _data . columns )
1884+ columns = column_names
18801885 else :
18811886 possible_columns = [
18821887 [v ] if isinstance (v , str ) else v
18831888 for v in params .values ()
18841889 if isinstance (v , (str , list ))
18851890 ]
18861891
1887- columns = (set (self ._data .columns ) & set (itertools .chain (* possible_columns ))) or {
1888- self ._data .columns [0 ]
1889- }
1892+ columns = set (column_names ) & set (itertools .chain (* possible_columns ))
1893+ columns = columns or {column_names [0 ]}
18901894 if y is None :
18911895 # When y is not specified HoloViewsConverter finds all the numeric
1892- # columns and use them as y values (see _process_chart_y). We meed
1896+ # columns and use them as y values (see _process_chart_y). We need
18931897 # to include these columns too.
18941898 columns |= set (self ._data .select (pl .col (pl .NUMERIC_DTYPES )).columns )
18951899 xs = x if is_list_like (x ) else (x ,)
18961900 ys = y if is_list_like (y ) else (y ,)
18971901 columns |= {* xs , * ys }
18981902 columns .discard (None )
18991903 # Reorder the columns as in the data.
1900- columns = sorted (columns , key = lambda c : self . _data . columns .index (c ))
1904+ columns = sorted (columns , key = lambda c : column_names .index (c ))
19011905
19021906 if isinstance (self ._data , pl .DataFrame ):
19031907 data = self ._data .select (columns ).to_pandas ()
0 commit comments