我正在尝试根据定义的值为seaborn:stripplot上的特定点着色。例如,
value=(df['x']=0.0
我知道您可以使用regplot等执行此操作,
df['color']= np.where( value==True , "#9b59b6")
和
scatter_kws={'facecolors':df['color']}
有没有办法为pair grid
和stripplot
做这件事?具体来说,要为下面的t1
或t2
中的指定值着色?
我也尝试过在match
中传递hue
var。但是,下面产生的这张图片#2并不是我想要的。
这里是df
:
par t1 t2 found
30000.0 0.50 0.45 yes
10000.0 0.30 0.12 yes
3000.0 0.40 0.00 no
这是我的代码:
# Import dependencies
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv("data.csv")
# Make the PairGrid
g = sns.PairGrid(df.sort_values("par", ascending=True),
x_vars=df.columns[1:3], y_vars=["par"],
height=5, aspect=.65)
# Draw a dot plot using the stripplot function
g.map(sns.stripplot, size=16, orient="h",
linewidth=1, edgecolor="gray", palette="ch:2.5,-.2,dark=.3")
sns.set_style("darkgrid")
# Use the same x axis limits on all columns and add better labels
g.set(xlim=(-0.1, 1.1), xlabel="% AF", ylabel="")
# Use semantically meaningful titles for the columns
titles = ["Test 1", "Test 2"]
for ax, title in zip(g.axes.flat, titles):
# Set a different title for each axes
ax.set(title=title)
# Make the grid horizontal instead of vertical
ax.xaxis.grid(False)
ax.yaxis.grid(True)
sns.despine(left=True, bottom=True)
我正在尝试用value=0.0
为点涂另一种颜色:
将match
变量传递到hue
中将产生以下内容,并删除第三个par=3000
值并折叠图。我可以对要突出显示的其他颜色进行分类。但是,离群值已从y轴移除,并且图已折叠。
答案 0 :(得分:0)
您确定要使用stripplot
吗?在我看来,您实际上是在尝试绘制scatterplot
?
另外,我认为您想使用FacetGrid
而不是PairGrid
?在这种情况下,它需要将您的数据框转换为“长格式”。
这就是我得到的:
df2 = df.melt(id_vars=['par','found'], var_name='Test', value_name='AF')
g = sns.FacetGrid(data=df2, col='Test', col_order=['t1','t2'], hue='found',
height=5, aspect=.65)
g.map(sns.scatterplot, 'AF','par',
s=100, linewidth=1, edgecolor="gray", palette="ch:2.5,-.2,dark=.3")