Python Pyecharts绘制箱线图详解
作者:渴望成为寂寞胜者 发布时间:2021-03-31 05:57:05
标签:Python,Pyecharts,箱线图
本篇博客只是单纯的记录一下自己学习Boxplot,没有过多的解释,官网:》》Boxplot
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
from datetime import datetime
plt.figure(figsize=(16,10))
import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker
from pyecharts.charts import Bar
import os
from pyecharts.options.global_options import ThemeType
cnboo=pd.read_excel("c.xls")
处理数据:
cnbotypegb=cnboo.groupby(['TYPE','SHOWYEAR'])['BO'].sum().replace()
cnbotypegbrst=cnbotypegb.reset_index().replace()
filmtype=cnbotypegbrst['TYPE'].unique()
对行标签和列标签进行转置:
cnbotypegbrst.T.index
cnbopvt=cnbotypegbrst.pivot(index='TYPE',
columns='SHOWYEAR',
values='BO'
)
cnbopvtv2=cnbopvt.iloc[:,2:].replace()
cnbopvtv2.index
cnbopvtv2=cnbopvtv2.fillna(0).replace()
xlist=cnbopvtv2.index.tolist()
xlist一共有12个,因此循环12次:
y_data=[]
for i in range(0,12):
y_data.append(cnbopvtv2.iloc[i].tolist())
得到的y_data数据:
[[47923.0,
64988.0,
0.0,
80506.0,
0.0,
69628.0,
69960.0,
0.0,
104853.0,
539542.0,
157535.0],
[48249.0,
160800.0,
153735.0,
336616.0,
370696.0,
263476.0,
916503.0,
1010848.0,
1828313.0,
1835840.0,
875026.0],
[30916.0,
160800.0,
86419.0,
65659.0,
39472.0,
263476.0,
201318.0,
309825.0,
226052.0,
1835840.0,
152997.0],
[30916.0,
160800.0,
18648.0,
65659.0,
39472.0,
263476.0,
201318.0,
309825.0,
226052.0,
1835840.0,
152997.0],
[53837.0,
91838.0,
36093.0,
100303.0,
58872.0,
285139.0,
647028.0,
451028.0,
765806.0,
1063170.0,
454325.0],
[53837.0,
22874.0,
14934.0,
100303.0,
124699.0,
285139.0,
320647.0,
430395.0,
235246.0,
89988.0,
15283.0],
[20510.0,
22874.0,
14934.0,
18806.0,
124699.0,
41184.0,
320647.0,
430395.0,
235246.0,
89988.0,
15283.0],
[40329.0,
22874.0,
85732.0,
36994.0,
124699.0,
41184.0,
320647.0,
430395.0,
118754.0,
89988.0,
15283.0],
[44745.0,
22874.0,
85732.0,
36994.0,
124699.0,
41184.0,
62967.0,
430395.0,
118754.0,
89988.0,
15283.0],
[28092.0,
72729.0,
82385.0,
182193.0,
255790.0,
259325.0,
62967.0,
160092.0,
118754.0,
136152.0,
112725.0],
[51321.0,
213633.0,
148063.0,
225026.0,
258684.0,
563843.0,
344841.0,
82557.0,
179793.0,
139666.0,
465533.0],
[15524.0,
38100.0,
86684.0,
225026.0,
31579.0,
150820.0,
344841.0,
82557.0,
179793.0,
139666.0,
465533.0]]
最后绘制图表:
import pyecharts.options as opts
from pyecharts.charts import Grid, Boxplot, Scatter
scatter_data = [650, 620, 720, 720, 950, 970]
box_plot = Boxplot({"Theme":ThemeType.ESSOS})
box_plot = (
box_plot.add_xaxis(xaxis_data=xlist)
.add_yaxis(series_name="", y_axis=box_plot.prepare_data(y_data))
.set_global_opts(
title_opts=opts.TitleOpts(
pos_left="center", title="2009-2019中国电影票房分类箱型图"
),
tooltip_opts=opts.TooltipOpts(trigger="item", axis_pointer_type="shadow"),
xaxis_opts=opts.AxisOpts(
type_="category",
boundary_gap=True,
splitarea_opts=opts.SplitAreaOpts(is_show=False),
axislabel_opts=opts.LabelOpts(formatter="{value}"),
splitline_opts=opts.SplitLineOpts(is_show=False),
),
yaxis_opts=opts.AxisOpts(
type_="value",
name="票房(万元)",
splitarea_opts=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
)
.set_series_opts(tooltip_opts=opts.TooltipOpts(formatter="{a}: {c}"))
)# {a}:系列名称,{b}:数据名称,{c}:数值数组,{d}:无
scatter = (
Scatter()
.add_xaxis(xaxis_data=xlist)
.add_yaxis(series_name="", y_axis=scatter_data)
.set_global_opts(
title_opts=opts.TitleOpts(
pos_left="10%",
pos_top="90%",
title="upper: Q3 + 1.5 * IQR \nlower: Q1 - 1.5 * IQR",
title_textstyle_opts=opts.TextStyleOpts(
border_color="#999", border_width=1, font_size=14
),
),
yaxis_opts=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(is_show=False),
axistick_opts=opts.AxisTickOpts(is_show=False),
),
)
)
grid = (
Grid(init_opts=opts.InitOpts(width="600px", height="400px"))
.add(
box_plot,
grid_opts=opts.GridOpts(pos_left="10%", pos_right="10%", pos_bottom="15%"),
)
.add(
scatter,
grid_opts=opts.GridOpts(pos_left="10%", pos_right="10%", pos_bottom="15%"),
)
)
grid.render_notebook()
也可以直接使用下面的代码,简单的绘制一张图:
boxplot=(Boxplot()
.add_xaxis(xlist)
.add_yaxis("电影数据",y_data)
)
boxplot.render_notebook()
来源:https://blog.csdn.net/wxfighting/article/details/123775978
0
投稿
猜你喜欢
- forms组件django框架提供了一个Form类,来进行web开发中的表单提交数据的处理工作。导入相关模块from django impo
- Python是静态作用域语言,但是它自身是一个动态语言。在Python中变量的作用域是由变量在代码中的位置决定的,与C语言有些相似,但不是完
- PHP中重定向网页跳转页面的方法(共三种)第一种:利用header()函数进行重定向,这也是我用的较多的。(注意!locationhe和“:
- 服务器现在同时输出json和xml两种数据,取决于服务程序和页面之间的约定。在程序遇到问题的时候会返回错误信息,也按照相同的约定会返回jso
- 我们知道 map 和 filter 是两种有效的 Python 方法来处理可迭代对象。但是,如果你同时使用 map 和 filter,代码可
- wheel文件Wheel和Egg都是python的打包格式,目的是支持不需要编译或制作的安装过程,实际上也是一种压缩文件,将.whl的后缀改
- 1.首先定义一个log文件# -*- coding: utf-8 -*-import osimport timeimport logging
- Django的Field类中方法有:to_python() # 把数据库数据转成python数据from_db_value() # 把数据库
- 自带验证器1、UniqueValidator用于验证(唯一)unique=True的字段,常用参数:queryset: required,用
- 为了让大家更好的对python中WSGI有更好的理解,我们先从最简单的认识WSGI着手,然后介绍一下WSGI几个经常使用到的接口,了解基本的
- 在学习python的时候,被推荐了使用PyCharm这款IDE,但是在import包的时候却发生了问题- -无法引入,但是明明通过了pip进
- 今天在intellij调试spark的时候感觉每次有新的一段代码,都要重新跑一遍,如果用spark-shell,感觉也不是特别方便,如果能像
- 线程池的概念是什么?在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是 如此,虚
- Django配合python进行requests请求前言在我们写代码的时候,经常会用到前后端分离开发的方法,例如微信小程序,安卓,网站等等&
- Python 语句语句是 Python 解释器解析和处理的基本指令单元。通常解释器按顺序一个接一个的执行语句。在 REPL 会话中,语句在输
- 1、什么是全局变量?在Python中,全局变量指的是可以作用于函数内部和外部的变量。在这里有两种情况:在函数的外部定义和内部定义添加glob
- 需要写个js滑动展开折叠(收缩)的效果,搜索到无忧脚本的一篇贴子,稍加修改了下使其在FF也可应用,代码如下: <
- pygal的安装大家可以参阅:pip和pygal的安装实例教程线图:import pygalline_chart = pygal.Line(
- URL完全匹配(具体的url)/indexURL模糊匹配(你根本就不知道index后面是什么,它根本不会返回参数)/index/\dURL带
- 本文实例讲述了Python简单计算数组元素平均值的方法。分享给大家供大家参考,具体如下:Python 环境:Python 2.7.12 x6