首页 > 其他分享 >双y轴组合图

双y轴组合图

时间:2022-11-21 15:48:55浏览次数:34  
标签:plt 组合 df matplotlib import 数据 day

# 1.导包、做基础设置
import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
import matplotlib.dates as mdate
from matplotlib import ticker
from datetime import datetime


%matplotlib inline

# plt.style.use('ggplot') # 修改图表样式
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # 解决中文显示问题


# 2.数据导入并做处理
df = pd.read_excel('/Users/wang/Desktop/data.xlsx'
                     , index_col=0
                     , keep_default_na=0)
df_day = df[df['district']=='整体']
df_day['all_uv_growth_rate'] = df_day['all_uv'].pct_change(periods=1).fillna(0).apply(lambda x: format(x, '.2%'))

# 3.创建数据标签函数
# 添加数据标签函数
def autolabel(x, y, axes):
"""因为是组合图,柱状图是绝对值数据,折线图是百分比数据,数据格式做了不同判断设置"""
    for a, b in zip(x, y):
        # 如果数据都<1,用百分数展示
        if (y<1).all():
            label = "{:.2%}".format(b)
        else:
            label = '%s' % b
        axes.annotate(label, xy=(a,b), xytext=(-20,3), textcoords='offset points')


# 4. 绘图
fig = plt.figure(figsize=(20,9))
ax1 = fig.add_subplot(1,1,1)
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))
ax1.bar(df_day.index, df_day['all_uv'], color='g', label='全量用户')

# 设置轴范围
ax1.set_ylim([181000, 188000])

# 设置为共用X轴的双y轴图表
ax2 = ax1.twinx()
ax2.plot(df_day.index, df_day['active_rate'], color='b', label='活跃率')

# 轴标签
ax1.set_xlabel('日期')
ax1.set_ylabel('全量用户')
ax2.set_ylabel('活跃率')

# 折线图添加数据标签
autolabel(df_day.index, df_day['active_rate'], ax2)
# autolabel(df_day.index, df_day['all_uv'], ax1)

# 第二个y轴数据刻度显示为百分数
ax2.yaxis.set_major_formatter(ticker.PercentFormatter(xmax=1,decimals=0))

# 设置图形标题
ax1.set_title('XXXX注册用户及活跃率指标')

# 图例
ax1.legend(loc=2)
ax2.legend(loc=1)
plt.show()

image

标签:plt,组合,df,matplotlib,import,数据,day
From: https://www.cnblogs.com/wxyz94/p/16911547.html

相关文章

  • php中的组合模式
    概念 当我们的一个对象可能代表一个单一的实体,或者一个组合的实体,但是仍然需要通过同样的方式被使用时,这种情形则适合使用组合模式的设计。 示例一个表单类实例在处理其......
  • 113:组合
    ###组合“is-a”关系,我们可以使用“继承”。从而实现子类拥有的父类的方法和属性。“is-a”关系指的是类似这样的关系:狗是动物,dogisanimal。狗类就应该继承动物类。“......
  • 数量4-排列组合
    1234方法2,可能性大于或等于3种时,反面推比较简单,反面为全A或全B(全B根本不够排除,剩下全A,全A就1种)5678要理解小学生条件含义,自己没有画图导致错了。......
  • dfs 实现排列型、组合型、指数型枚举
    1、排列型枚举大家喜闻乐见,经常写的全排列。不做赘述。#include<bits/stdc++.h>#defineendl'\n'usingnamespacestd;intn;intpath[20];boolvis[20];voiddfs(intste......
  • 【调度优化】基于遗传算法求解工件的并行调度组合优化问题附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 求组合数
    #include<iostream>#include<algorithm>usingnamespacestd;typedeflonglongLL;constintN=100010,mod=1e9+7;intfact[N],infact[N];intqmi......
  • 多组合少继承
    继承:强调类与类之间的关系组合:强调对象和对象之间的关系清楚python支持多继承,从而涉及到一些MRO的点,这里不做赘述,在实际工作过程中,我们经常会使用继承来实现代......
  • 针对某客服系统的组合攻击
    前言本文从漏洞利用到对该客服系统进行渗透测试中遇到的问题做详细解析,并在文章结尾公布黑客针对该系统进行攻击的样本。......
  • 软件设计模式白话文系列(十二)组合模式
    1、模式描述组合模式属于结构型模式,把多个对象组成树状结构来表示局部与整体,这样用户可以以相同的方式对待单个对象和组合对象。需要注意的是这里的组合和之前系列中,我们......
  • CAcUiLineWeightComboBox线宽下拉组合框设置隐藏随层、随块、默认属性有效的设置方式
    添加组合框控件首先添加combox控件更改一下属性:先修改OwnerDraw为Fixed,再更改HasStrings为trueHasStrings如果不设置,文字会是乱码,更改Type为DropList添加......