wot
wot copied to clipboard
Error in visualizing trajectory
Hi, When I visualize trajectory using this code I have a error like that! so how can I solve this problem? do you have something to know about that? This data is tutorial data!
`# Visualize trajectories trajectory_dropdown = widgets.Dropdown( options=trajectory_ds.var.index, description='Trajectory:' )
def update_trajectory_vis(name): figure = plt.figure(figsize=(10, 10)) plt.axis('off') plt.tight_layout() plt.title(name) plt.scatter(coord_df['x'], coord_df['y'], c='#f0f0f0', s=4, marker=',', edgecolors='none', alpha=0.8) binned_df = trajectory_ds.obs.copy() binned_df['values'] = trajectory_ds[:, name].X binned_df = binned_df.groupby(['x', 'y'], as_index=False).sum() plt.scatter(binned_df['x'], binned_df['y'], c=binned_df['values'], s=6, marker=',', edgecolors='none', vmax=binned_df['values'].quantile(0.975)) plt.colorbar().ax.set_title('Trajectory')
widgets.interact(update_trajectory_vis, name=trajectory_dropdown)`
ValueError Traceback (most recent call last) File ~/mambaforge/envs/pegasus/lib/python3.9/site-packages/ipywidgets/widgets/interaction.py:240, in interactive.update(self, *args) 238 value = widget.get_interact_value() 239 self.kwargs[widget._kwarg] = value --> 240 self.result = self.f(**self.kwargs) 241 show_inline_matplotlib_plots() 242 if self.auto_display and self.result is not None:
Cell In[7], line 15, in update_trajectory_vis(name) 12 plt.scatter(coord_df['x'], coord_df['y'], c='#f0f0f0', 13 s=4, marker=',', edgecolors='none', alpha=0.8) 14 binned_df = trajectory_ds.obs.copy() ---> 15 binned_df['values'] = trajectory_ds[:, name].X 16 binned_df = binned_df.groupby(['x', 'y'], as_index=False).sum() 17 plt.scatter(binned_df['x'], binned_df['y'], c=binned_df['values'], 18 s=6, marker=',', edgecolors='none', vmax=binned_df['values'].quantile(0.975))
File ~/mambaforge/envs/pegasus/lib/python3.9/site-packages/pandas/core/frame.py:4091, in DataFrame.setitem(self, key, value) 4088 self._setitem_array([key], value) 4089 else: 4090 # set column -> 4091 self._set_item(key, value)
File ~/mambaforge/envs/pegasus/lib/python3.9/site-packages/pandas/core/frame.py:4300, in DataFrame._set_item(self, key, value) 4290 def _set_item(self, key, value) -> None: 4291 """ 4292 Add series to DataFrame in specified column. 4293 (...) 4298 ensure homogeneity. 4299 """ -> 4300 value, refs = self._sanitize_column(value) 4302 if ( 4303 key in self.columns 4304 and value.ndim == 1 4305 and not isinstance(value.dtype, ExtensionDtype) 4306 ): 4307 # broadcast across multiple columns if necessary 4308 if not self.columns.is_unique or isinstance(self.columns, MultiIndex):
File ~/mambaforge/envs/pegasus/lib/python3.9/site-packages/pandas/core/frame.py:5035, in DataFrame._sanitize_column(self, value) 5033 if is_dict_like(value): 5034 if not isinstance(value, Series): -> 5035 value = Series(value) 5036 return _reindex_for_setitem(value, self.index) 5038 if is_list_like(value):
File ~/mambaforge/envs/pegasus/lib/python3.9/site-packages/pandas/core/series.py:512, in Series.init(self, data, index, dtype, name, copy, fastpath) 510 data = data.copy() 511 else: --> 512 data = sanitize_array(data, index, dtype, copy) 514 manager = get_option("mode.data_manager") 515 if manager == "block":
File ~/mambaforge/envs/pegasus/lib/python3.9/site-packages/pandas/core/construction.py:646, in sanitize_array(data, index, dtype, copy, allow_2d) 643 subarr = cast(np.ndarray, subarr) 644 subarr = maybe_infer_to_datetimelike(subarr) --> 646 subarr = _sanitize_ndim(subarr, data, dtype, index, allow_2d=allow_2d) 648 if isinstance(subarr, np.ndarray): 649 # at this point we should have dtype be None or subarr.dtype == dtype 650 dtype = cast(np.dtype, dtype)
File ~/mambaforge/envs/pegasus/lib/python3.9/site-packages/pandas/core/construction.py:705, in _sanitize_ndim(result, data, dtype, index, allow_2d) 703 if allow_2d: 704 return result --> 705 raise ValueError( 706 f"Data must be 1-dimensional, got ndarray of shape {data.shape} instead" 707 ) 708 if is_object_dtype(dtype) and isinstance(dtype, ExtensionDtype): 709 # i.e. NumpyEADtype("O") 711 result = com.asarray_tuplesafe(data, dtype=np.dtype("object"))
ValueError: Data must be 1-dimensional, got ndarray of shape (165892, 1) instead