(args, trace_patch)
| 2178 | |
| 2179 | |
| 2180 | def process_dataframe_pie(args, trace_patch): |
| 2181 | import numpy as np |
| 2182 | |
| 2183 | names = args.get("names") |
| 2184 | if names is None: |
| 2185 | return args, trace_patch |
| 2186 | order_in = args["category_orders"].get(names, {}).copy() |
| 2187 | if not order_in: |
| 2188 | return args, trace_patch |
| 2189 | df: nw.DataFrame = args["data_frame"] |
| 2190 | trace_patch["sort"] = False |
| 2191 | trace_patch["direction"] = "clockwise" |
| 2192 | uniques = df.get_column(names).unique(maintain_order=True).to_list() |
| 2193 | order = [x for x in OrderedDict.fromkeys(list(order_in) + uniques) if x in uniques] |
| 2194 | |
| 2195 | # Sort args['data_frame'] by column `names` according to order `order`. |
| 2196 | token = nw.generate_temporary_column_name(8, df.columns) |
| 2197 | args["data_frame"] = ( |
| 2198 | df.with_columns( |
| 2199 | nw.col(names) |
| 2200 | .replace_strict(order, np.arange(len(order)), return_dtype=nw.UInt32) |
| 2201 | .alias(token) |
| 2202 | ) |
| 2203 | .sort(token) |
| 2204 | .drop(token) |
| 2205 | ) |
| 2206 | return args, trace_patch |
| 2207 | |
| 2208 | |
| 2209 | def infer_config(args, constructor, trace_patch, layout_patch): |
no test coverage detected