pyecharts

柱状图

bar = (
    Bar()
    .add_xaxis(['衬衣','毛衣','羊毛衫','鞋子','袜子'])
    .add_yaxis('商家',[5,12,34,24,54])
    #配置项
    #.set_global_opts(title_opts=opts.TitleOpts(title='主标题',subtitle='副标题'))
    #或
    .set_global_opts(title_opts={'text':'主标题','subtext':'副标题'})
)
bar.render_notebook()
bar.render('asd.html')#渲染出名为asd的html文件

在这里插入图片描述

把柱状图导出为png格式

from snapshot_selenium import snapshot
bar = (
    Bar()
    .add_xaxis(['衬衣','毛衣','羊毛衫','鞋子','袜子'])
    .add_yaxis('商家',[5,12,34,24,54])
)
make_snapshot(snapshot,bar.render(),'niubi.png')

在这里插入图片描述

改变柱状图的背景颜色

#导入主题的包
from pyecharts.globals import ThemeType
bar = (
    Bar(
        init_opts=opts.InitOpts(theme=ThemeType.DARK)
        #这里把DARK换成LIGHT背景就是白的,黑色背景如下图所示
    )
    .add_xaxis(['衬衣','毛衣','羊毛衫','鞋子','袜子'])
    .add_yaxis('商家',[5,12,34,24,54])
)
bar.render_notebook()

在这里插入图片描述

可以加多组y坐标的值,会以不同的颜色显示

bar = (
    Bar()
    .add_xaxis(['衬衣','毛衣','羊毛衫','鞋子','袜子'])
    .add_yaxis('商家A',[5,12,34,24,54])
    .add_yaxis('商家B',[32,43,12,22,64])
    .add_yaxis('商家C',[23,65,23,12,65])
)
bar.render_notebook()

在这里插入图片描述

PyEcharts配置项

在这里插入图片描述
TitlePots:标题配置项
LegendOpts:图例配置项
ToolboxPots:工具箱配置项
VisualMapOpts:视觉映射配置项
TooltipOpts:提示框配置项
DataZoomOpts:区域缩放配置项

from pyecharts.charts import Bar, Line
from pyecharts import options as opts

from pyecharts.faker import Faker
from pyecharts.globals import ThemeType, RenderType
Faker.choose()#随机生成统一属性的7个值
c = (
	Bar()
	.add_xaxis(Faker.choose())
	
	.add_yaxis('商家A',Faker.values())#随机生成7个数
	.add_yaxis('商家B',Faker.values())
)
c.render_notebook() 

Faker.choose生成同一属性的7个值
Faker.values生成随机的7个数

初始化配置项Init

c = (
    Bar(
    #初始配置项一般写在图表的对象里(Bar()括号里)
    init_opts=opts.InitOpts(
            width='700px',
            height='400px',#图表的画布大小,px->css的长度单位
            renderer=RenderType.CANVAS, #CANVAS渲染风格,默认就是他,可选:canvas,svg
            page_title='网页标题',
            theme=ThemeType.WALDEN,
            bg_color='gold'#背景颜色
        )
    )
    .add_xaxis(Faker.choose())

    .add_yaxis('商家A',Faker.values())#随机生成7个数
    .add_yaxis('商家B',Faker.values())

全局配置项

.set_global_opts(
	#标题配置项
	title_opts=opts.TitleOpts(
		title='柱形图',#主标题名称
		title_link='https://www.baidu.com',#主标题跳转链接
		title_target='blank',#默认blank表示在新窗口打开,self当前窗口打开(点击主标题的链接时会覆盖当前的网页打开)
		subtitle='副标题',#副标题
		subtitle_link='https://www.baidu.com',#副标题点击后的跳转链接
		subtitle_target='blank',
		#标题的位置
		pos_left='40px' ,#从画布左部开始或20%整个画布的20%的位置处
		pos_top='0px',
		pos_right='',
		pos_bottom=''
		#边距,不用px
		padding=10,
		#主标题和副标题的间隙,不用px
		item_gap=20,
		),

区域缩放配置项

			
datazoom_opts=opts.DataZoomOpts(
	is_show()=True,#是否显示组件
	type_='slider'#或 组件类型 slider, inside(通过鼠标滚轮缩放)
	is_realtime=True,#拖动时是否实时更新图标
	range_start=20,#数据窗口的起始位置的百分比
	range_end=80#结束百分比
	orient='horizontal'#默认水平放 或 vertical 垂直放
	is_zoom_lock=True,#是否锁定所选区域,如果锁定拉进度条就不能缩放,而是平移,False既可以缩放也可以平移
		)
	)
)
c.render_notebook()

在这里插入图片描述

图例配置项

legend_opts=opts.LegendOpts(
#图例类型:plain普通图例, scroll可以滚动翻页的图例,用于图例较多的情况
type_='plain',
is_show=False,#不显示图例,True显示图例
pos_left='20%',#图例的位置 pos_left,pos_right,pos_top,pos_bottom
orient='',#horizontal或vertical水平或垂直
selected_mode='',#选择模式,有四个值:True:开启图例点击,False:关闭图例点击,single:单选(只显示一个图例),multiple:多选(默认)
align='left',#图标和文字的位置
padding=10,#内边距
item_gap=5,#相邻两个图例的间距
item_width=30,#每一项图例的宽度
item_height=20,#每项图例的高度
inactive_color='',# 未被选中的图例的颜色,默认是灰色
legend_icon='',#图标的形状 circle,rect(长方形),roundRect(圆角矩形),triangle(三角形),arrow(箭头),也可以加上自定义图标类型的路径
),

视觉映射的配置项

在这里插入图片描述
显示数量在区间内的元素

visualmap_opts=opts.VisualMapOpts(
	is_show=True,#显示后会出现一个区间条
	type_='color',#color 或 size
	min_=0,#区间的最小值
	max_=100,#区间的最大值
	range_opacity=0.8,#透明度,将图片和标签文字都变透明
	range_text=['max','min'],#两端的文本
	range_color=['blue','green','red'],
	orient='',#horizontal或vertical水平或垂直
	pos_right='5%',
	is_piecewise=True,#是否分段,也可以修改段数
	in_inverse=True,#是否翻转,最大值和最小值 位置相反
)

分段 后
在这里插入图片描述

提示框配置项

tooltip_opts=opts.TooltipOpts(
	is_show=True,#是否要有提示项
	#触发类型
	#item:数据项,一般用于散点图,柱形图,饼图
	#axis:坐标轴,提示线,主要用于条形图,折线图
	trigger='item',
	#触发提示条件
	#mousemove(鼠标移动时)click(点击时)mousemove/click(两个同时)
	trigger_on='click',
	is_show_content=True,#是否显示提示框内容
	#标签内容的格式
	#字符串中的模板变量:{a}:系列名 {b}:数据名 {c}:值
	formatter='{a}:{b}-{c} '#标签显示的格式
	background_color='black',#背景颜色
	border_with=1,#边框的宽度
	border_color='white',#边框的颜色
)

在这里插入图片描述

坐标轴的配置项

xaxis_opts=opts.AxisOpts(
	is_show=True,#是否显示x轴
	#坐标轴的类型:
	#value:数值轴,用于连续数据
	#category:类目轴,用于离散数据,比如星期一,星期二,等
	#time:时间轴,使用与连续的时间序列数据
	type_='category'
),
yaxis_opts=opts.AxisOpts(
is_show=False,#是否显示y轴
	axisline_opts=opts.AxisLineOpts(is_show=False),#不显示y轴的线,但显示刻度和值
	axistick_opts=opts.AxisTickOpts(is_show=False),
#不显示刻度,但别的还在
)

系列配置项

from pyecharts.charts import Line
c = (
    Line(
    #初始配置项
    init_opts=opts.InitOpts(
            width='700px',
            height='400px',#图表的画布大小,css的长度单位
            renderer=RenderType.CANVAS, #CANVAS渲染风格,默认就是他,可选:canvas,svg
            page_title='网页标题',
            theme=ThemeType.WALDEN,
            bg_color=''#背景颜色
        )
    )
    .add_xaxis(Faker.choose())

    .add_yaxis('商家A',Faker.values())#随机生成7个数
    .add_yaxis('商家B',Faker.values())
    (以上那些配置项都应该在这个位置)
    #全局配置项
    .set_global_opts(
    	title_opts=opts.TitleOpts(title='折线图'),#标题
    	#提示线
    	tooltip_opts=opts.TooltipOpts(trigger='axis')
    )
    #系列配置项
    .set_series_opts(
    	#ItemStyleOpts图片样式配置项
		itemstyle_opts=opts.ItemStyleOpts(
			color='blue',#图片颜色风格,可以使用纯色或RGB: rgb(120,120,120)或透明度rgba(120,120,120,0.5),或括号里直接使用十六进制的颜色代码如#ccc
			#也可以单独设置透明度
			opacity=0.6,
			border_color='green',
			border_width=2,
		),
		#LineStyleOpts:线条样式配置项
		linestyle_opts=opts.LineStyleOpts(
			is_show=True,
			width=2,#线宽
			color='green',#线的颜色
			type_='solid',#solid实线,dashed虚线,dotted点线
		)#LabelOpts标签配置项
		label_opts=opts.LabelOpts(
			is_show=True,
			postion='top'#标签出现在点的相对位置left,bottom,inside,insideLeft,insideTop...
			color='red',#字的颜色
			font_size=14,#字的大小
			font_familt='Arial',#字体
			font_style='normal',#是否斜体,italic
			font_weight='normal'#是否加粗,bold加粗
			#标签旋转,-90到90
			rotate=40,#正数逆时针旋转40度,负数(-40)顺时针旋转
		),
		#标记点的配置项
		markpoint_opts=opts.MarkPointOpts(
			data=[
				#type_:特殊的标记类型,min,max,average可以写其中一个
				#opts.MarkPointItem可以写多个
				opts.MarkPointItem(type_='max',symbol='pin',symbol_size=50#大小),
				opts.MarkPointItem(type_='min',symbol='pin'*标记的图形*,symbol_size=50#大小)
			]
		)#标记线配置项
		markline_opts=opts.MarkLineOpts(
			data=[
				opts.MarkLineItem(type_='average')#其参数设置与标记点一样
			],
			label_opts=opts.LabelOpts(
				color='red'#标记线的颜色
			)
		)
	)
)
c.render_notebook()
    )

在这里插入图片描述

Faker

from pyecharts.faker import Faker
Faker.choose()#随机产生同属性的七个名词
Faker.values()#随机产生七个数
Faker.cars#随机产生七个车的牌子
Faker.country#随机产生七个国家
Faker.clock #时钟的列表

饼图

from pyecharts.charts import Pie
import pyecharts.options as opts
list(zip(Faker.choose(),Faker.values()))

在这里插入图片描述
列表套元组

[list(x) for x in zip(Faker.choose(),Faker.values())]

列表套列表
在这里插入图片描述

c=Pie()
c.add('',[list(x) for x in zip(Faker.choose(),Faker.values())])
c.render_notebook()

在这里插入图片描述

c=(
	Pie()
	.add('',[list(x) for x in zip(Faker.choose(),Faker.values())])
	.set_colors(['red','blue','green','orange','yellow','pink','black'])
	.set_global_opts(
		title_opts=opts.TitleOpts(title='设置颜色'),
		legend_opts=opts.LegendOpts(type_='scroll',pos_bottom="80%",orient='vertical')#
	)
	.set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c}'))#标签格式为b:c
)
c.render_notebook()

在这里插入图片描述

玫瑰图

v = Faker.choose()
c = (
	Pie()
	.add('',
	[list(i) for i in zip(v, Faker.values())],
	radius=['30%','75%'],#半径
	center=['25%','50%'],#中心点位置分别是x轴和y轴
	rosetype='radius',#还有area
	label_opts=opts.LabelOpts(is_show=True) #显示标签
	)
	.add('',
	[list(i) for i in zip(v, Faker.values())],
	radius=['20%','55%'],#半径
	center=['75%','50%'],#中心点位置分别是x轴和y轴
	rosetype='area',#还有area
	label_opts=opts.LabelOpts(is_show=False) #不显示标签
	)
    .set_global_opts(title_opts=opts.TitleOpts(title='玫瑰图'))
)
c.render_notebook()

在这里插入图片描述

带动画的柱形图

from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType
c = (
    Bar(
		init_opts=opts.InitOpts(
		#动画配置
			animation_opts=opts.AnimationOpts(
				animation_delay=1000,#动画延时1秒
				animation_easing='elasticOut',#动画类型-easingOut弹性减速
			)
		)
	)
    .add_xaxis(Faker.choose())
    .add_yaxis('商家A ',Faker.values(),category_gap=0)#同一系列间柱子的距离
    .add_yaxis('商家B ',Faker.values(),gap='0%')#与上一个系列柱子之间的间距
    .set_global_opts(title_opts=opts.TitleOpts(title='柱形图',subtitle='副标题'))
  
)
c.render_notebook()

堆叠柱状图

c = (
    Bar()
	.add_xaxis(Faker.choose())
    .add_yaxis('商家A ',Faker.values(),stack='abc')
    .add_yaxis('商家B ',Faker.values(),stack='abc')
	)
	.set_global_opts(
		title_opts=opts.TitleOpts(
			title='堆叠柱状图',
			subtitle='副标题'
		),
		***.reversal_axis()***#加这一行变成条形图
		xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),#x轴上的标签逆时针旋转45度
		#缩放
		datazoom_opts=[
			opts.DataZoomOpts(), #在x轴拖拉的方式缩放
			opts.DataZoomOpts(type_='inside')
		]
	)
)

stack后面的字符串如果一样,会产生堆叠效果
在这里插入图片描述

is_show=True可以换成 position=‘left’,更改数据便签是否出现和出现的位置

地图

from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker

时间轮播多图

from pyecharts import options as opts
from pyecharts.charts import Bar,Timeline,Pie
from pyecharts.faker import Faker

x = Faker.choose()
tl=Timeline()#创建一个时间轮播图的对象
for i in range(2020,2025):
	bar=(
		Bar()
		.add_xaxis(x)
		.add_yaxis('A',Faker.values())
		.add_yaxis('B',Faker.values())
		
		.set_global_opts(
			title_opts=opts.TitleOpts(title='某商家{}年营业额'.format(i))
		)
	)
	tl.add(bar,'{}年'.format(i))#第一个参数是图形对象,第二个参数是自定义文字
tl.render_notebook()

在这里插入图片描述

轮播玫瑰图
from pyecharts import options as opts
from pyecharts.charts import Bar,Timeline,Pie
from pyecharts.faker import Faker

attr = Faker.choose()
tl=Timeline()#创建一个时间轮播图的对象
for i in range(2020,2025):
	pie=(
        Pie()
        .add(
        '',
        [list(z) for z in zip(attr,Faker.values())],
        rosetype='radius',
        radius=['30%','55%']
        )
        .set_global_opts(
        title_opts=opts.TitleOpts(title='某商家{}年营业额'.format(i))
		)
	)
	tl.add(pie,'{}年'.format(i))#第一个参数是图形对象,第二个参数是自定义文字
tl.render_notebook()

在这里插入图片描述

项目1

#导入包和数据
import pandas as pd
data = pd.read_excel('D:/桌面/机器学习文件/电商数据可视化(1)/某公司电商数据.xls',header=0, dtype = object)
data.head()

#查看省份的数据
data.省份.value_counts()

#查看订单时间不为空的
data.订单付款时间.notnull()

#过滤掉没有付款的订单数据(过滤为空的数据)
data[data.订单付款时间.notnull()]

#统计各个省份的订单量,
result = data[data.订单付款时间.notnull()].groupby('收货地址')[['订单编号']].count()

#将数据转变成字典结构
result2 = result.to_dict()['订单编号']

#将数据转变为二维数组的形式
[*result2.items()]# *将字典展开 .items()得到key和values结合的形式

#画地图展示
c = (
	Map()
	.add('各省份订单量',
		[*result2.items()],#数据左边会自动匹配地图各个省
		'china',#选择地图类型
		is_map_symbol_show=False#隐藏地图符号
	)
	.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
	.set_global_opts(
		title_opts=opts.TitleOpts(title='各省份订单量'),
		visualmap_opts=opts.VisualMapOpts(max_=2000)#订单量的最大值,默认是100
	)
)

时间序列分析

#要先把数据修改成时间类型,然后就可以把其当做日期对象来使用而不是字符串
data.订单创建时间 = pd.to_datatime(data.订单创建时间)

#每天订单量统计可视化
order_add_time = data.订单创建时间.map(lambda x: x.strftime('%Y-%m-%d'))#将时间中的年月日取出来(原数据还要时分秒)

#按照订单创建时间分组,得到每一天的订单量
result3=data.groupby(order_add_time).agg(['订单编号':‘count’]).to_dict()

#画图
c=(
	Line()
	.add_xaxis(list(result3.keys()))
	.add_yaxis('订单量',list(result.values())
	)
)
c.render_notebook()

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值