Repository: matplotlib/matplotlib
Pull request: [ENH]: data kwarg support for mplot3d #20912
## PR Summary
Fix #20912

Hi, I have started working on this issue. This will be my first open source contribution, so I will need some help and guidance. I have gone through the contributing guide and have setup the development environment and Matplotlib in editable mode on my system. 

I am currently working on understanding the Matplotlib internals.
 

Problem statement:
[ENH]: data kwarg support for mplot3d
### Problem

3d axes don't support the data kwarg:
```
gcf().add_subplot(projection="3d").scatter("a", "b", "c", data={"a": [0], "b": [1], "c": [2]})
```
results in
```
ValueError: could not convert string to float: 'a'
```

### Proposed solution

I *think* it's "mostly" a matter of adding a bunch of `@_preprocess_data` decorators to 3D plotting methods similarly to what's done for 2D plots, hence tagging as good-first-issue (though you'll need to understand a bit about the Matplotlib internals).

### Additional context and prior art

_No response_

Hints from issue discussion:
Hey I am new to open source can you assign me this issue if its open and some resources that can help me for solving this. 

@akshat-max the contributing guide is at https://matplotlib.org/devdocs/devel/index.html. To get familiar w/ the data kwarg, I'd suggest tracing through a couple of the plotting methods that take it as input - you can find em in https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/axes/_axes.py#L1075

Commit message: Blank line removed

Patch to review:
diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py
index d4eef7ca77e6..488f0786ddfa 100644
--- a/lib/mpl_toolkits/mplot3d/axes3d.py
+++ b/lib/mpl_toolkits/mplot3d/axes3d.py
@@ -19,7 +19,7 @@
 
 import numpy as np
 
-from matplotlib import _api, cbook, docstring
+from matplotlib import _api, cbook, docstring, _preprocess_data
 import matplotlib.artist as martist
 import matplotlib.axes as maxes
 import matplotlib.collections as mcoll
@@ -2271,6 +2271,10 @@ def add_collection3d(self, col, zs=0, zdir='z'):
         collection = super().add_collection(col)
         return collection
 
+    @_preprocess_data(replace_names=["xs", "ys", "zs", "s",
+                                     "edgecolors", "c", "facecolor",
+                                     "facecolors", "color"],
+                      label_namer=None)
     def scatter(self, xs, ys, zs=0, zdir='z', s=20, c=None, depthshade=True,
                 *args, **kwargs):
         """


Code review comments:
diff_hunk: @@ -2271,6 +2271,10 @@ def add_collection3d(self, col, zs=0, zdir='z'):
         collection = super().add_collection(col)
         return collection
 
+    @_preprocess_data(replace_names=["xs", "ys", "zs", "s",
+                                     "edgecolors", "c", "facecolor",
+                                     "facecolors", "color"],
+                      label_namer=None)
path: lib/mpl_toolkits/mplot3d/axes3d.py
text: @user1:
```suggestion
                                     "facecolors", "color"])
```
It's corrct that there is no canonical label namer in this case, but `None` is the default so can be left out.