我有一个带有垂直数据的相当简单的带状图。
planets = sns.load_dataset("planets")
sns.stripplot(x="method", y="distance", data=planets, size=4, color=".7")
plt.xticks(rotation=45, ha="right")
plt.show()
Run Code Online (Sandbox Code Playgroud)
我想将每个 x 元素 ( ) 的平均值绘制method为一个小水平条,类似于您得到的结果:
sns.boxplot(
x="method",
y="distance",
data=planets,
whis=[50, 50],
showfliers=False,
showbox=False,
showcaps=False
)
Run Code Online (Sandbox Code Playgroud)
但没有第一/第三四分位数的垂直线(whis=[50,50]只有点),并且显示平均值而不是中位数。也许有一个更优雅的解决方案,不涉及箱线图。
我有以下数据:
import pandas as pd
import numpy as np
# Generate dummy data.
a = np.random.random(75)
b = np.random.random(75) - 0.6
c = np.random.random(75) + 0.75
# Collate into a DataFrame
df = pd.DataFrame({'a': a, 'b': b, 'c': c})
df.columns = [list(['WT', 'MUT', 'WTxMUT']), list(['Parent', 'Parent', 'Offspring'])]
df.columns.names = ['Genotype', 'Status']
df_melt = pd.melt(df)
Run Code Online (Sandbox Code Playgroud)
我使用以下代码在seaborn中绘制它:
import seaborn as sb
sb.swarmplot(data = df_melt, x = "Status", y = "value", hue = "Genotype")
Run Code Online (Sandbox Code Playgroud)

如何获得每个组的 x 跨度?例如,父组的群图水平跨度范围是多少?
我想让我的群图中的数据点更大。我的代码是:
sns.swarmplot(x="Heart", y="FirstPersonPronouns", hue="Speech", data=df)
sns.set_context("notebook", font_scale=1.8)
Run Code Online (Sandbox Code Playgroud)
我已经尝试过scatter_kws但得到:
Attribute error: unknown property scatter_kws.
Run Code Online (Sandbox Code Playgroud) 我试图让我的群图更容易以黑白方式阅读,并且对于色盲的人来说,通过让色调不仅影响颜色,还影响标记的另一个几何方面。
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid")
tips = sns.load_dataset("tips")
fig, ax = plt.subplots(1,1)
ax = sns.swarmplot(x="day", y="total_bill", hue="sex",data=tips,size=8,ax=ax)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我有一个示例数据集:
A B C
23 45 3
53 78 46
23 68 24
52 68 57
52 79 76
78 79 13
Run Code Online (Sandbox Code Playgroud)
我怎样才能实现这个目标?我试过这个:
sns.swarmplot(y=A)
Run Code Online (Sandbox Code Playgroud)
但它只给出了 1 个属性的群图,并且不包含该组的标签。
我有:
import numpy as np
import pandas as pd
import seaborn as sb
import matplotlib.pyplot as plt
# Generate random data
set1 = np.random.randint(0, 40, 24)
set2 = np.random.randint(0, 100, 24)
# Put into dataframe and plot
df = pd.DataFrame({'set1': set1, 'set2': set2})
data = pd.melt(df)
sb.swarmplot(data=data, x='variable', y='value')
Run Code Online (Sandbox Code Playgroud)
使用seaborn的swarmplot函数绘制的两个随机分布:

我希望两个分布的各个图都用彩色线连接,以便数据框中第一个数据集的第一个数据点与第二个数据集的第一个数据点连接。我意识到如果没有seaborn,这可能会相对简单,但是我想保留各个数据点不重叠的功能。有什么方法可以访问seaborn swarmfunction 中的各个绘图坐标吗?
Pandas 数据框有“user_fair、user_good、 rating”这 3 列。
我用来sns.swarmplot绘制“user_fair vs rating”和“user_good vs rating”。
“user_fair vs rating”工作正常,但是当尝试绘制“user_good vs rating”时,代码会永远运行并且不会打印任何图。我正在使用Python3和Jupyter Notebook。
这是我正在使用的代码:
fig, ax = plt.subplots(figsize=(15, 15))
ax = sns.swarmplot(y="user_good", x="rating", data=data)
ax.set_xlabel("Rating",size = 20,alpha=0.8)
ax.set_ylabel("Goodness of User who got Rated",size = 20,alpha=0.8)
ax.set_title("Distributin of Rating and How are Goodness Score of ratee",size=20)
Run Code Online (Sandbox Code Playgroud) swarmplot ×7
python ×6
seaborn ×6
matplotlib ×3
boxplot ×1
graph ×1
pandas ×1
plot ×1
python-3.x ×1