matplotlib散点图:如何使用data=参数
matplotlib散点图:如何使用data=参数,matplotlib,scatter-plot,Matplotlib,Scatter Plot,scatter()的matplotlib文档说明: 除上述参数外,此函数还可以采用data关键字参数。如果给出了此类数据参数,则以下参数将替换为数据[]: 具有以下名称的所有参数:“s”、“颜色”、“y”、“c”、“线宽”、“facecolor”、“facecolor”、“x”、“edgecolors” 然而,我不知道如何让它发挥作用。 最小的例子 import matplotlib.pyplot as plt import numpy as np data = np.random.rando
scatter()
的matplotlib文档说明:
除上述参数外,此函数还可以采用data关键字参数。如果给出了此类数据参数,则以下参数将替换为数据[]:
具有以下名称的所有参数:“s”、“颜色”、“y”、“c”、“线宽”、“facecolor”、“facecolor”、“x”、“edgecolors”
然而,我不知道如何让它发挥作用。
最小的例子
import matplotlib.pyplot as plt
import numpy as np
data = np.random.random(size=(3, 2))
props = {'c': ['r', 'g', 'b'],
's': [50, 100, 20],
'edgecolor': ['b', 'g', 'r']}
plt.scatter(data[:, 0], data[:, 1], data=props)
plt.show()
生成具有默认颜色和大小的打印,而不是提供的打印
有人使用过该功能吗?参考您的示例,我认为以下内容符合您的要求:
plt.scatter(data[:, 0], data[:, 1], **props)
文档中的这一点让我感到困惑,看看源代码,axes/\u axes.py中的scatter
似乎与此数据
参数无关。剩余的kwargs
最终成为PathCollection
的参数,可能是有bug
您还可以使用PathCollection中的各种set
方法在scatter
之后设置这些参数,例如:
pc = plt.scatter(data[:, 0], data[:, 1])
pc.set_sizes([500,100,200])
这似乎是大约两年前添加的一个被忽略的功能。发行说明中有一个简短的示例(
).除了这个问题和一篇简短的博文(),我只能找到这些
基本上,任何类似dict的对象(“文档称之为标签数据”)都在data
参数中传递,并且根据其键指定绘图参数。例如,您可以使用字段a
、b
和c
创建结构化数组
coords = np.random.randn(250, 3).view(dtype=[('a', float), ('b', float), ('c', float)])
您通常会使用
pyplot.plot(coords['a'], coords['b'], 'x')
但是使用数据参数,它可以用
pyplot.plot('a', 'b','x', data=coords)
标签b
可能与将行设置为蓝色的样式字符串混淆,但第三个参数消除了这种歧义。它也不限于x和y数据
pyplot.scatter(x='a', y='b', c='c', data=coords)
将基于列“c”设置点颜色
看起来此功能是为熊猫数据帧添加的,并且比其他对象处理得更好。此外,它的文档记录似乎很差,而且有些不稳定(使用x
和y
关键字参数在plot
命令中失败,但在scatter
中工作正常,错误消息没有帮助)。话虽如此,当您想要绘制的数据有标签时,它提供了一个很好的速记。谢谢您的回答。显然,我可以直接将数组作为参数传递给函数。我正在编写一些大型代码,其中使用data=参数可以大大简化我的代码,这就是我好奇的原因。我还检查了scatter()
中的代码,并将数据的使用追溯到类Artist
中的一个函数update
,但即使这样,我也无法理解它的作用。使用**props
与我们期望的data=props
不一样简单吗?我想你只是不想每次都拼出每个关键词。谢谢你的回答。一年后,我想我基本上已经放弃了这种语法,我不能说我已经错过了很多。但是在任何情况下,我完全误解了关于这一点的文档,现在用你的例子来说确实有意义。