【数据分析5plotly交互式绘图】

导入相关库

import plotly as py 
import plotly.graph_objs as go
from plotly.graph_objs import Scatter #导入graph_objs中的子模块
# 忽略告警信息
import warnings
warnings.filterwarnings("ignore")
# mode--定义图形类型,散点或者线形图
pyplot  = py.offline.iplot

输出html

  • 首先定义一个trace0的变量,用于保存绘图数据
  • 每个绘图对象都由Plotly模块里面graph_objs图像对象中的子模块来定义
  • 定义变量trace0trace1xy坐标
  • 定义一个data,把trace0trace1组合成一组数据
  • 最后通过该plot函数绘制
# 绘制出来的图形,会生成一个html文件
trace0 = Scatter(x = [1,2,3,4],y = [10,15,13,17])
trace1 = Scatter(x = [1,2,3,4],y = [6,5,11,9])
data = [trace0,trace1]
py.offline.plot(data,filename ='./image/fth.html')

在notebook中输出图形

# 在jupyter notebook下输出
from plotly.graph_objs import Scatter
py.offline.init_notebook_mode()# 初始化步骤
trace0 = Scatter(x = [1,2,3,4],y = [10,15,13,17])
trace1 = Scatter(x = [1,2,3,4],y = [6,5,11,9])
data = [trace0,trace1]
py.offline.iplot(data)

散点图

pd.set_option('display.max_columns',44)

air_data['SUM_YR'] = air_data['SUM_YR_1'] + air_data['SUM_YR_2']#计算票价收入
pd.set_option('display.max_columns',44)
# 汇总计算出每年飞行次数总和,票价总收入和飞行公里数
income_data = air_data.groupby(air_data['FFP_DATE'][:4]).sum()[['SUM_YR_1','FLIGHT_COUNT','SEG_KM_SUM']]
income_data.reset_index(inplace = True)
# mode--定义图形类型,散点或者线形图
pyplot  = py.offline.iplot
trace1 = Scatter(x =income_data['FFP_DATE'], y = income_data['SUM_YR_1'], mode ='markers',name = '票价总收入')
trace2 = Scatter(x =income_data['FFP_DATE'], y = income_data['SEG_KM_SUM'], mode ='markers + lines',name = '飞行里程数')
# mode--定义图形类型,散点或者线形图
data  = [trace1,trace2]
pyplot(data)

在这里插入图片描述

折线图

trace1 = Scatter(x =income_data['FFP_DATE'], y = income_data['SUM_YR_1'], mode ='lines',name = '票价总收入',
                line =dict(width = 2,color='green') )
trace2 = Scatter(x =income_data['FFP_DATE'], y = income_data['SEG_KM_SUM'], mode ='lines',name = '飞行里程数',
                line = dict(width = 2,color='blue'))
# mode--定义图形类型,散点或者线形图
data  = [trace1,trace2]
#go.Layout就可以创建图层对象
layout = go.Layout(title = '票价和飞行里程变化趋势',xaxis = dict(title = '飞行次数'),yaxis =\
                   dict(title = '财政收入'),legend=dict(x=1,y =0.5,font = dict(size=15,color='black')))
fig = go.Figure(data=data,layout = layout) #data与layout组成一个图象对象
pyplot(fig)

在这里插入图片描述

柱状图

# 统计不同会员卡级别票价总收入
FFP_TIER = air_data.groupby('FFP_TIER').mean()['SUM_YR_1']
trace_basic = [go.Bar(x =FFP_TIER.index.tolist(),y =FFP_TIER.values.tolist(),
                      marker=dict(color=["red",'darkgray','darkgreen']),
                      opacity=0.39)] #透明度
layout = go.Layout(title = '不同会员卡级别票价均值', xaxis =dict(title ='会员级别'))
figure_basic = go.Figure(data = trace_basic,layout=layout)# data与layout组成一个图象对象
pyplot(figure_basic) #输出

在这里插入图片描述

分类柱状图

data = pd.pivot_table(index=['FFP_TIER','GENDER'],data = air_data,values= 'SUM_YR_1',aggfunc='mean')
data.reset_index(inplace = True)
G1 = data[data['GENDER'] == '女']
G2 = data[data['GENDER'] == '男']
trace_1 = go.Bar(x = G1.FFP_TIER,  y = G1.SUM_YR_1, name ='女会员',opacity=0.7)
trace_2 = go.Bar(x = G2.FFP_TIER,  y = G2.SUM_YR_1, name ='男会员',opacity=0.7)

trace = [trace_1,trace_2]
layout = go.Layout(title = '不同会员级别下的男女平均票价', xaxis =dict(title ='会员级别'))
# figure
figure = go.Figure(data = trace,layout=layout)
pyplot(figure) #输出

在这里插入图片描述

堆积柱状图

两个分类变量

# 计算不同会员等级下,不同性别下的飞行次数之和
data = pd.pivot_table(index=['FFP_TIER','GENDER'],data = air_data,values= 'FLIGHT_COUNT',aggfunc='sum')
data.reset_index(inplace = True)
G1 = data[data['GENDER'] == '女']
G2 = data[data['GENDER'] == '男']

trace_1 = go.Bar(x = G1.FFP_TIER,  y = G1.FLIGHT_COUNT, name ='女会员',width=0.3)
trace_2 = go.Bar(x = G2.FFP_TIER,  y = G2.FLIGHT_COUNT, name ='男会员',width=0.3)

trace = [trace_1,trace_2]
layout = go.Layout(title = '不同会员级别下的飞行次数', xaxis =dict(title ='不同等级'),barmode ='stack')
# figure
figure = go.Figure(data = trace,layout=layout)
pyplot(figure) #输出

在这里插入图片描述

直方图

air_data = pd.read_csv('./data/air_data.csv')
air_data = air_data[air_data['AGE'].notnull()]
data = [go.Histogram(x = air_data['AGE'], histnorm ='',marker = dict(color='green'))]
pyplot(data) #输出
data = [go.Histogram(x = air_data['AGE'], histnorm ='probability',marker = dict(color='green'))]#绘制成概率密度形式
pyplot(data) #输出

在这里插入图片描述

饼图

WORK_PROVINCE = air_data['WORK_PROVINCE'].value_counts()[:10]

trace = [go.Pie(labels = WORK_PROVINCE.index, values = WORK_PROVINCE.values,hole=0.2,  \
               textfont =dict(size=12,color ='white'))]                 # hole中间部分
layout = go.Layout(title = '不同省份用户数占比',titlefont=dict(color ='black',size=20),height=400,width =400)
fig = go.Figure(data = trace,layout=layout) # data与layout组成一个图象对象
pyplot(fig) #输出

在这里插入图片描述

标记对比

train = pd.read_csv('./data/train.csv')
Item_Fat_Content = train['Item_Fat_Content'].value_counts()# 统计不同脂肪含量的商品总数
# 计算订单平均数量
import numpy as np
mean_value = Item_Fat_Content.values.mean()
y = np.tile(mean_value,5)#复制5遍
trace_basic = go.Bar(x =Item_Fat_Content.index.tolist(),y = Item_Fat_Content.values.tolist(),
                      marker=dict(color = ["red", "blue","green",'darkgray', 'darkgreen']),name='不同脂肪含量',
                      opacity=0.39) #透明度
trace_average = go.Scatter(x = Item_Fat_Content.index.tolist(), y = y,mode ='lines',
                          name ='平均值' )

data = [trace_basic,trace_average]
layout = go.Layout(title = '不同脂肪含量的商品数量', xaxis =dict(title ='地区'))
figure_basic = go.Figure(data = data,layout=layout)# data与layout组成一个图象对象
figure_basic['layout'].update(height=400,width =500)
pyplot(figure_basic) #输出

在这里插入图片描述

双坐标轴

# 统计不同年份,飞行里程数和飞行次数的变化趋势
income_data = air_data.groupby(air_data['FFP_DATE'].str[:4]).sum()[['FLIGHT_COUNT','SEG_KM_SUM','SUM_YR_2']]
income_data.reset_index(inplace = True)
trace1 = Scatter( x = income_data['FFP_DATE'], y = income_data['FLIGHT_COUNT'],name ='飞行里程数变化趋势',mode='lines',\
                line = dict(width = 2,color='green'))
trace2 = Scatter( x = income_data['FFP_DATE'], y = income_data['SUM_YR_2'],name ='票价收入变化趋势',mode='lines',\
                line = dict(width = 2,color='blue'), yaxis='y2')

data  = [trace1,trace2]
#go.Layout就可以创建图层对象
layout = go.Layout(title = '变化趋势图',xaxis = dict(title = '年份'),
       yaxis = dict(title = '地区生产总值'),yaxis2 = dict(title = '税收收入',overlaying = 'y',side = 'right'),
                   legend=dict(x=.1,y =1,font = dict(size=12,color='black')))
fig = go.Figure(data=data,layout = layout)# data与layout组成一个图象对象
pyplot(fig)

在这里插入图片描述

多图

2行1列

Item_Fat_Content = train['Item_Fat_Content'].value_counts()# 统计不同脂肪含量的商品总数
Outlet_Type = train['Outlet_Type'].value_counts()# 统计不同商店类型数量
from plotly import tools
fig = tools.make_subplots(rows=2,cols=1,subplot_titles=('不同的脂肪含量','不同商店类型'))

trace1 = go.Bar(x = Item_Fat_Content.index.tolist(),y = Item_Fat_Content.values.tolist(),
                      marker=dict(color=["red", "blue","green",'darkgray', 'darkgreen']),\
                      opacity=0.39,name ='不同的脂肪含量')  #透明度
trace2 = go.Bar(x = Outlet_Type.index.tolist(),y = Outlet_Type.values.tolist(),
                      marker=dict(color=["green", "blue","purple",'lightpink']),\
                      opacity=0.7,name ='不同商店类型')  #透明度
fig.append_trace(trace1,1,1)
fig.append_trace(trace2,2,1)
fig['layout'].update(height=600,width =600, title='不同指标下的数量情况')
pyplot(fig) #输出

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值