Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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 绘制连接两个Swarmlot的单个数据点的彩色线_Python_Matplotlib_Seaborn_Swarmplot - Fatal编程技术网

Python 绘制连接两个Swarmlot的单个数据点的彩色线

Python 绘制连接两个Swarmlot的单个数据点的彩色线,python,matplotlib,seaborn,swarmplot,Python,Matplotlib,Seaborn,Swarmplot,我有: 使用seaborn的Swarmlot函数绘制的两个随机分布: 我希望两个分布的单独绘图都用一条彩色线连接,这样数据框中集合1的第一个数据点就与集合2的第一个数据点连接起来。 我意识到,如果没有seaborn,这可能会相对简单,但我希望保留单个数据点不重叠的特性。 是否有任何方法可以访问seaborn Swarm功能中的各个绘图坐标?当然可以,但您确实不想这样做 在这里返回axis实例:ax。您可以抓取子对象ax.get_children以获取所有绘图元素。您将看到,对于每一组点,都有一

我有:

使用seaborn的Swarmlot函数绘制的两个随机分布:

我希望两个分布的单独绘图都用一条彩色线连接,这样数据框中集合1的第一个数据点就与集合2的第一个数据点连接起来。 我意识到,如果没有seaborn,这可能会相对简单,但我希望保留单个数据点不重叠的特性。
是否有任何方法可以访问seaborn Swarm功能中的各个绘图坐标?

当然可以,但您确实不想这样做

在这里返回axis实例:ax。您可以抓取子对象ax.get_children以获取所有绘图元素。您将看到,对于每一组点,都有一个PathCollection类型的元素。可以使用PathCollection.get_offsets方法确定x、y坐标

我不建议你这样做!疯狂就在这里


我建议你看一下源代码,从Swarmlotter派生出你自己的PairedSwarmlotter,并根据需要更改draw Swarmlot方法

当然,这是可能的,但你真的不想

在这里返回axis实例:ax。您可以抓取子对象ax.get_children以获取所有绘图元素。您将看到,对于每一组点,都有一个PathCollection类型的元素。可以使用PathCollection.get_offsets方法确定x、y坐标

我不建议你这样做!疯狂就在这里

我建议你看一下源代码,从Swarmlotter派生出你自己的PairedSwarmlotter,并根据需要更改draw Swarmlot方法

尽管他这么说,我还是试着给出了很好的答案

疯狂就在这里

。。。事实上,我认为这是非常直接的,并产生了很好的结果:

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')
尽管他这么说,我还是试着给出了很好的答案

疯狂就在这里

。。。事实上,我认为这是非常直接的,并产生了很好的结果:

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

事实上,我并没有真正测试它,但它看起来非常简单。谢谢你。您只缺少导入seaborn作为sns,可以将其中一个导入numpy作为np删除。谢谢,我已修复它!->是的,我现在也用这个方法画了一个2x2的图,所以有更多的点,它同样直接工作。唯一困难的部分是找出ax的哪些子对象是要使用的对象。事实上,我并没有真正测试它,但它似乎非常简单。谢谢你。您只缺少导入seaborn作为sns,可以将其中一个导入numpy作为np删除。谢谢,我已修复它!->是的,我现在也用这个方法画了一个2x2的图,所以有更多的点,它同样直接工作。唯一困难的部分是找到斧子的哪个孩子是要使用的对象。