改进我的matplotlib.pyplot '的语法散点图的目标



我有三维数据,其中一维是分类的:length,width,target。为简单起见,假设target可以取{0, 1, 2}中的值。我想绘制lengthwidth的对比图target。这些点会根据目标值有不同的颜色和形状。

我能够在matplotlib.pyplot中做到这一点,作为plt导入,使用以下语法。我假设pandasDataFramedf具有我所施加的结构。

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类似的东西。尽管我可能会尝试,但我无法在文档或在线资源中找到此类信息。我相信它一定在某处。我只是没能找到它…


编辑。这道题被标为重复。这些副本有助于解决一些问题,但并不能解决上述所有问题。特别地,不讨论形状。我发现最接近的是以下问题:如何根据列变量改变标记的形状?还有其他类似的问题。但是与一个简单的shape = "target"调用相比,这是相当丑陋的。

python"软件包,名为plotnine,但是似乎已经更新了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")

为什么不疯狂一点,同时使用huestyle呢!

我猜正确的答案是"不要做它在matplotlib;在seaborn"做它。希望错误的标记为重复将被解决,然后我可以添加一个答案与完整的细节。

怎么样:

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()

相关内容

  • 没有找到相关文章

最新更新