Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 高亮显示散点图中的特定点(基于条件)_Python_Pandas_Matplotlib_Seaborn - Fatal编程技术网

Python 高亮显示散点图中的特定点(基于条件)

Python 高亮显示散点图中的特定点(基于条件),python,pandas,matplotlib,seaborn,Python,Pandas,Matplotlib,Seaborn,我有一个numpy数组,我将其转换为数据帧以在matplotlib.pytplot中可视化它: x = np.array([[10,10,1], [10,20,0], [10,3,0]]) df = pd.DataFrame(x, columns=["x", "y", "z"]) 如果我以z列为颜色绘制散点图,我会得到以下输出(请注意,我使用的是不同的值): 因此,所有的红点都没有显示在绘图中。如何突出显示它们 如果我运行seaborn,它会工作,但是matplotlib中有什么方法: im

我有一个numpy数组,我将其转换为数据帧以在matplotlib.pytplot中可视化它:

x = np.array([[10,10,1], [10,20,0], [10,3,0]])
df = pd.DataFrame(x, columns=["x", "y", "z"])
如果我以z列为颜色绘制散点图,我会得到以下输出(请注意,我使用的是不同的值):

因此,所有的红点都没有显示在绘图中。如何突出显示它们

如果我运行seaborn,它会工作,但是matplotlib中有什么方法:

import seaborn as sns
sns.lmplot('x', 'y', data =df, hue='z', fit_reg=False)
fig = plt.gcf()
fig.set_size_inches(15, 10)
plt.show()

类似的问题:
只让点变大,但不要把它们放在前面。这就有点误导了。

为什么不单独绘制它们,以便设置不同的参数呢?最重要的是,如果你在之后绘制红色点,它们将位于蓝色点之上

以下是一个基于您的示例:

将numpy导入为np
将matplotlib.pyplot作为plt导入
作为pd进口熊猫
x=np.array([np.random.rand(2000),np.random.rand(2000),np.random.rand(2000)])
df=pd.DataFrame(np.transpose(x),列=[“x”、“y”、“z”])
图,ax=plt.子批次()
df[“val”]=df['z'].应用(λx:如果x>0.9,则为红色,否则为蓝色)
非红色(df=df.loc[df['val']!='red']
红色(df=df.loc[df['val']=='red']
最大散射(x=非红色测向[“x”]、y=非红色测向[“y”]、c=非红色测向[“val”]、s=100)
最大散射(x=red_-df[“x”],y=red_-df[“y”],c=red_-df[“val”],s=100)
图=plt.gcf()
plt.plot()

您可以对数据进行排序,以便最后绘制前景点,如以下示例的下图所示:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(pd.np.random.rand(1000,3), columns=["x", "y", "z"])
df.z = df.z.add(.1).astype(int)
df["val"] = df['z'].apply(lambda x: "red" if x==1 else "blue")

df1 = df.sort_values('z')

fig, ax = plt.subplots(2)
ax[0].scatter(x=df["x"], y=df["y"], c=df["val"], s=100)
ax[1].scatter(x=df1["x"], y=df1["y"], c=df1["val"], s=100)

这是否回答了您的问题?
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(pd.np.random.rand(1000,3), columns=["x", "y", "z"])
df.z = df.z.add(.1).astype(int)
df["val"] = df['z'].apply(lambda x: "red" if x==1 else "blue")

df1 = df.sort_values('z')

fig, ax = plt.subplots(2)
ax[0].scatter(x=df["x"], y=df["y"], c=df["val"], s=100)
ax[1].scatter(x=df1["x"], y=df1["y"], c=df1["val"], s=100)