matplotlib 散点图:如何使用 data= 参数

Diz*_*ahi 6 matplotlib scatter-plot

matplotlib 文档说明scatter():

\n
\n

除了上述参数之外,该函数还可以采用 data 关键字参数。如果给出这样的数据参数,则以下参数将替换为 data[]:

\n

具有以下名称的所有参数:\xe2\x80\x98s\xe2\x80\x99、\xe2\x80\x98color\xe2\x80\x99、\xe2\x80\x98y\xe2\x80\x99、\xe2\x80 \x98c\xe2\x80\x99、\xe2\x80\x98linewidths\xe2\x80\x99、\xe2\x80\x98facecolor\xe2\x80\x99、\xe2\x80\x98facecolors\xe2\x80\x99、\xe2 \x80\x98x\xe2\x80\x99,\xe2\x80\x98edgecolors\xe2\x80\x99。

\n
\n

但是,我不知道如何让它工作。\n最小的例子

\n
import matplotlib.pyplot as plt\nimport numpy as np\n\ndata = np.random.random(size=(3, 2))\nprops = {'c': ['r', 'g', 'b'],\n         's': [50, 100, 20],\n         'edgecolor': ['b', 'g', 'r']}\n\nplt.scatter(data[:, 0], data[:, 1], data=props)\nplt.show()\n
Run Code Online (Sandbox Code Playgroud)\n

生成具有默认颜色和大小的图,而不是提供的图。

\n

有人用过这个功能吗?

\n

use*_*699 7

这似乎是大约两年前添加的一个被忽视的功能。发行说明有一个简短的示例( https://matplotlib.org/users/prev_whats_new/whats_new_1.5.html#working-with-labeled-data-like-pandas-dataframes)。除了这个问题和一篇简短的博客文章(https://tomaugspurger.github.io/modern-6-visualization.html)之外,这就是我能找到的全部。

基本上,任何类似字典的对象(文档称之为“标记数据”)都会在参数中传递data,并且根据其键指定绘图参数。例如,您可以创建一个包含字段a、b和的结构化数组c

coords = np.random.randn(250, 3).view(dtype=[('a', float), ('b', float), ('c', float)])
Run Code Online (Sandbox Code Playgroud)

您通常会使用以下命令创建avs的绘图b

pyplot.plot(coords['a'], coords['b'], 'x')
Run Code Online (Sandbox Code Playgroud)

但使用 data 参数可以完成

pyplot.plot('a', 'b','x', data=coords)
Run Code Online (Sandbox Code Playgroud)

标签b可能会与将线条设置为蓝色的样式字符串混淆,但第三个参数消除了这种歧义。它也不限于 x 和 y 数据,

pyplot.scatter(x='a', y='b', c='c', data=coords)
Run Code Online (Sandbox Code Playgroud)

将根据“c”列设置点颜色。

看起来这个功能是为 pandas 数据帧添加的,并且比其他对象更好地处理它们。此外,它似乎记录很少,并且有些不稳定(使用x和y关键字参数在plot命令中失败,但在使用 时工作正常scatter,错误消息没有帮助)。话虽如此,当您想要绘制的数据带有标签时,它提供了一个很好的速记方式。