我需要帮助添加标记或符号的平均值在这个图如图所示.(下面的图片显示了我想要的结果.

import pandas as pd
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
import plotly.express as px

data = pd.DataFrame({'job_title':np.random.choice(['data_science','Data_analysis'],400),
              'experience_level':np.random.choice(['entry','senior'],400),
              'salary':np.random.choice((50000),400)})
data.head(1)
data= data.sort_values(by='experience_level', ascending=True)
fig = px.strip(data, x='job_title', y='salary', color='experience_level')

fig.update_layout(width=800, height=600)
fig.show()

The blue and orange dots shows mean

推荐答案

似乎没有直接的解决方案,但我想我找到了一个解决这个问题的方法:

fig = px.strip(data, x='job_title', y='salary', color='experience_level')

# Calculate mean points for each strip category
mean_points = data.groupby(['job_title', 'experience_level'])['salary'].mean().reset_index()

然后,我们将不得不 for each 平均值绘制一个圆圈:

for index, row in mean_points.iterrows():
    # Create an offset for "entry" and "senior" points
    offset = 50 if row["experience_level"] == "entry" else -50

    # Use anchor to position the shape on the right strip
    fig.add_shape(type='circle',
                  xsizemode='pixel', ysizemode='pixel',
                  xanchor=row["job_title"],
                  yanchor=row["salary"],
                  x0=-5 + offset, x1=5 + offset,
                  y0=-5, y1=5,
                  line=dict(color='black', width=2),
                  fillcolor='red' if row["experience_level"] == "entry" else 'blue',
                  opacity=1)

我使用锚点来设置圆的相对坐标.实际上row["job_title"]是一个字符串,所以用它来计算很复杂.

在经验水平的函数中,我使用不同的偏移量在x轴上移动圆(我也改变了 colored颜色 ).

然后你可以绘制它:

fig.update_layout(width=800, height=600)
fig.show()

结果:

enter image description here

这个解决方案的一个问题是我们使用的是像素(硬编码)值,但是我们可以通过使偏移量随图形大小而变化来轻松改进它.

希望它会帮助!

Python相关问答推荐

当密钥是复合且唯一时,Pandas合并抱怨标签不唯一

如何计算两极打印机中 * 所有列 * 的出现次数?

即使在可见的情况下也不相互作用

Pandas:将多级列名改为一级

导入...从...混乱

如何使Matplotlib标题以图形为中心,而图例框则以图形为中心

如何保持服务器发送的事件连接活动?

如何杀死一个进程,我的Python可执行文件以sudo启动?

以逻辑方式获取自己的pyproject.toml依赖项

将标签移动到matplotlib饼图中楔形块的开始处

在方法中设置属性值时,如何处理语句不可达[Unreacable]";的问题?

OpenGL仅渲染第二个三角形,第一个三角形不可见

如何在Python请求中组合多个适配器?

如何过滤组s最大和最小行使用`transform`'

Python—在嵌套列表中添加相同索引的元素,然后计算平均值

没有内置pip模块的Python3.11--S在做什么?

用由数据帧的相应元素形成的列表的函数来替换列的行中的值

如何将一个文件的多列导入到Python中的同一数组中?

根据过滤后的牛郎星图表中的数据计算新系列

在不中断格式的情况下在文件的特定部分插入XML标签