Python 高亮显示散点图中的特定点(基于条件)
我有一个numpy数组,我将其转换为数据帧以在matplotlib.pytplot中可视化它: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
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)