seaborn绘制箱线图和折线图

29 篇文章 2 订阅

利用seaborn绘制箱线图和折线图(均值连线),过程出现的问题:
1.问题1
在这里插入图片描述
参考python seaborn 共享x轴画图 数据可视化对代码进行修改:
画图部分代码:

fig = plt.figure(figsize=[18,6])
ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()
sns.boxplot(x='date',y='parameter',hue='Type',
            data=data_sort.reset_index(),ax=ax1,
                    palette="cool_r",linewidth = 1.0,
                    fliersize = 1.0,saturation = 0.8,
                    showmeans=True,
                    notch=True,
                    meanprops={"marker": "+","markersize": "5"},
                    dodge=False)
sns.pointplot(data_NRT_gro.index,data_NRT_gro.values,color='#9E71FF',
              linewidth = 1.0,label = 'class1',marker='o',
              ax = ax2)

注意的点:
(1)用sns.pointplot绘图,不用sns.lineplot;
(2)注意参数dodge,当dodge=True,表示遇到重合的情况,会沿着分类轴移动,即不重合;

参考资料:https://www.likecs.com/ask-601710.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会回答你的问题并提供相应的代码。 首先,你需要将数据存储在一个DataFrame中,然后使用pandas的groupby函数对FactoryName-JiJXH进行分组,然后使用seaborn绘制箱线图折线图。 以下是示例代码: ```python import pandas as pd import seaborn as sns from pyecharts import options as opts from pyecharts.charts import Boxplot, Line # 创建DataFrame df = pd.DataFrame({ 'FactoryName': ['A', 'A', 'B', 'B', 'B'], 'JiJXH': [1, 2, 3, 4, 5], 'sale': [10, 20, 30, 40, 50] }) # 将FactoryName和JiJXH合并为一列 df['FactoryName-JiJXH'] = df['FactoryName'] + '-' + df['JiJXH'].astype(str) # 对FactoryName-JiJXH进行分组 grouped = df.groupby('FactoryName-JiJXH') # 绘制箱线图 box = Boxplot() for name, group in grouped: box.add_xaxis([name]) box.add_yaxis('', [group['sale'].tolist()], boxgap=0, tooltip_opts=opts.TooltipOpts(trigger='axis', axis_pointer_type='cross')) box.set_global_opts(title_opts=opts.TitleOpts(title='Sale Boxplot', subtitle='')) box.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) box.render('boxplot.html') # 绘制折线图 line = Line() for name, group in grouped: line.add_xaxis([name]) line.add_yaxis('Median', [group['sale'].median()], label_opts=opts.LabelOpts(is_show=False)) line.set_global_opts(title_opts=opts.TitleOpts(title='Sale Median Line', subtitle='')) line.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position='top')) line.render('line.html') ``` 这段代码会生成两个文件:boxplot.html和line.html,你可以在浏览器中打开这两个文件查看结果。 如果你想要在一个图表中同时显示箱线图折线图,你可以使用pyecharts的Overlap组合图,以下是示例代码: ```python from pyecharts.charts import Overlap # 创建Overlap图表 overlap = Overlap() overlap.add(box) overlap.add(line) # 设置x轴标签旋转和间隔 overlap.set_global_opts( xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45, interval=0)), legend_opts=opts.LegendOpts(is_show=True) ) # 显示图表 overlap.render('overlap.html') ``` 这段代码会生成一个名为overlap.html的文件,在浏览器中打开即可查看复合图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值