按目标改进散点图的“matplotlib.pyplot”语法[重复]
Posted
技术标签:
【中文标题】按目标改进散点图的“matplotlib.pyplot”语法[重复]【英文标题】:Improve My `matplotlib.pyplot` Syntax for Scatter Plot by Target [duplicate] 【发布时间】:2021-11-21 07:07:03 【问题描述】:我有三维数据,其中一维是分类的:length
、width
、target
。为简单起见,假设target
可以采用0, 1, 2
中的值。我想绘制length
vs width
“by”target
。这些点将根据目标值具有不同的颜色和形状。
我可以在matplotlib.pyplot
中执行此操作,导入为plt
,使用以下语法。我假设 pandas
DataFrame
df
具有我强加的结构。
X0 = df.query("target == 0.0").drop("target", axis = 1)
X1 = df.query("target == 1.0").drop("target", axis = 1)
X2 = df.query("target == 2.0").drop("target", axis = 1)
ax = plt.axes()
X0.plot(x = "length", y = "width", kind = "scatter", ax = ax, color = "red")
X1.plot(x = "length", y = "width", kind = "scatter", ax = ax, color = "blue")
X2.plot(x = "length", y = "width", kind = "scatter", ax = ax, color = "green")
plt.show()
我相信我们都同意这是 bbaaaddd。
几年前,我曾经在R
做一些编程。 ggplot2
包允许以下形式的语法
ggplot(df, x = length, y = width, shape = target).geom_point().
可以将shape = target
替换为colour = target
以根据target
的值获得不同的颜色。
我想要pyplot
中的类似内容。尽我所能,我无法在文档或在线资源中找到此类信息。我确定它一定在某处。就是没找到。。。
编辑。
此问题已标记为重复。这些副本有助于解决一些问题,但它们并不能解决上面提出的所有问题。特别是,没有讨论形状。我发现最接近的是以下问题:How to change the shape of the marker depending on a column variable?。还有其他类似的问题。但与简单的shape = "target"
调用相比,这非常难看。
有一个名为 plotnine
的“ggplot for python”包,但它似乎已经 5 年没有更新了。你也似乎需要做from plotnine import *
之类的事情,我当然不会对此感到兴奋。
也许我所追求的功能在pyplot
中不存在。如果是这样,这就是生活! :)
编辑。 @Trenton McKinney 建议使用 seaborn
,导入为 sns
。这有一个hue
选项,可以精确地进行不同的着色。
sns.scatterplot(data = df, x = "length", y = "width", hue = "target")
这仍然没有回答我关于形状的问题——(部分)“重复”也没有。但是,sns.scatterplot
也有一个style
选项,其描述与hue
相同,只是“不同颜色”被“不同标记”替换。
sns.scatterplot(data = df, x = "length", y = "width", style = "target")
为什么不发疯,同时使用hue
和style
!
我猜正确答案是“不要在matplotlib
中执行;在seaborn
中执行”。希望将错误标记为重复的问题得到解决,然后我可以添加包含完整详细信息的答案。
【问题讨论】:
【参考方案1】:怎么样:
for target in [0.0, 1.0, 2.0]:
df.query("target == " + str(target)).drop("target", axis = 1).plot(x =
"length", y = "width", kind = "scatter")
plt.show()
【讨论】:
以上是关于按目标改进散点图的“matplotlib.pyplot”语法[重复]的主要内容,如果未能解决你的问题,请参考以下文章