如何在matplolib python上制作jitterplot

如何在matplolib python上制作jitterplot,python,matplotlib,scatter-plot,Python,Matplotlib,Scatter Plot,以下是我的代码(改编自): 我想用matplotlib制作一个漂亮的jitterplot(比如on或)。问题是,我想根据每个单元格的“Delta_7”值为每个单元格指定一种颜色。在绘制“Delta_10”和“Delta_14”时,这种颜色会保持不变,而我在seaborn上没有做到这一点。 请告诉我您是否有任何线索(python软件包、编码技巧…) 请注意,点的位置可以从散点返回的列表中获得。这些位置可能会抖动,例如仅在x方向。可能需要将x轴的范围扩大一点,以显示每个移位的点 下面是一些开始实验的

以下是我的代码(改编自):

我想用matplotlib制作一个漂亮的jitterplot(比如on或)。问题是,我想根据每个单元格的“Delta_7”值为每个单元格指定一种颜色。在绘制“Delta_10”和“Delta_14”时,这种颜色会保持不变,而我在seaborn上没有做到这一点。 请告诉我您是否有任何线索(python软件包、编码技巧…)


请注意,

点的位置可以从
散点返回的列表中获得。这些位置可能会抖动,例如仅在x方向。可能需要将x轴的范围扩大一点,以显示每个移位的点

下面是一些开始实验的代码:

导入matplotlib.pyplot作为plt
作为pd进口熊猫
将numpy作为np导入
def抖动_点(点):
偏移量=点。获取偏移量()
抖动的偏移量=偏移量
#只有x方向的抖动
抖动的_偏移量[:,0]+=np.random.uniform(-0.3,0.3,offset.shape[0])
点。设置偏移(抖动偏移)
df_1=pd.DataFrame({'Cells':np.arange(01100),
“Delta_7”:np.rand.rand(100),
“Delta_10”:np.rand.rand(100),
“Delta_14”:np.random.rand(100)})
图,ax1=plt.子批次()
columns=df_1.columns[1:]
c=df_1['Delta_7']
对于i,枚举中的列(列):
圆点=plt.散射(np.完整((透镜(df_1),1),i),df_1[柱],s=50,c=c,cmap='plasma')
抖动点(点)
plt.xticks(范围(列),列)
xmin,xmax=plt.xlim()
plt.xlim(xmin-0.3,xmax+0.3)#留出一些空间来显示抖动的点
cbar=plt.colorbar()
plt.show()

当您尝试使用seaborn时,是否使用了
hue
参数?嗨@tomjn!问题是我不知道如何在同一个seaborn图上绘制所有的“Delta”列……然而,当我尝试
ax=sns.stripplot(y=“Delta_7”,hue='Cells',palete='viridis',data=df_1,dodge=True,jitter=0.2)
所有的点都有相同的颜色
df_1 = pd.DataFrame({'Cells' : np.arange(0,100), 'Delta_7' : np.random.rand(100,), 'Delta_10' : np.random.rand(100,), 'Delta_14' : np.random.rand(100,)}, columns = ['Cells','Delta_7', 'Delta_10', 'Delta_14'])



#figure
fig, ax1 = plt.subplots()
fig.set_size_inches(13, 10)



#c sequence
c = df_1['Delta_7']

#plot

plt.scatter(np.full((len(df_1), 1), 1), df_1['Delta_7'] , s = 50, c=c, cmap = 'viridis')
plt.scatter(np.full((len(df_1), 1), 2), df_1['Delta_10'] , s = 50, c=c, cmap = 'viridis')
plt.scatter(np.full((len(df_1), 1), 3), df_1['Delta_14'] , s = 50, c=c, cmap = 'viridis')
cbar = plt.colorbar()