1.数据可视化—pyecharts的源码使用
2.ECharts常见图表配置
3.pyecharts 安装及图形绘制
数据可视化—pyecharts的使用
本文将介绍数据可视化工具 pyecharts 的使用方法,以及如何在 Python 中生成各种图表。源码pyecharts 是源码一个用于生成 Echarts 图表的类库,主要应用于数据可视化。源码
pyecharts 提供了丰富的源码图表类型,包括但不限于:柱状图(Bar)、源码原生淘宝客源码3D 柱状图(Bar3D)、源码箱形图(Boxplot)、源码带有涟漪特效动画的源码散点图(EffectScatter)、漏斗图(Funnel)、源码仪表盘(Gauge)、源码地理坐标系(Geo)、源码关系图(Graph)、源码热力图(HeatMap)、源码K线图(Kline)、源码折线/面积图(Line)、3D 折线图(Line3D)、水球图(Liquid)、地图(Map)、足球源码模板平行坐标系(Parallel)、饼图(Pie)、极坐标系(Polar)、雷达图(Radar)、桑基图(Sankey)、散点图(Scatter)、3D 散点图(Scatter3D)、主题河流图(ThemeRiver)和词云图(WordCloud)。
用户可以通过 Grid、公司门户源码Overlap 和 Page 类来管理图表的布局和展示方式,其中 Grid 类用于并行显示多张图,Overlap 类用于结合不同类型图表叠加画在同张图上,Page 类用于在同一网页按顺序展示多图,Timeline 类则提供时间线轮播多张图的功能。
要使用 pyecharts,可以通过命令行工具 pip 安装所需包:
pip install pyecharts
对于全球国家地图、中国省级地图和中国市级地图,分别可以通过以下命令安装:
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
在使用 pyecharts 时,ghost源码编译一些基础函数如 add()、show_config() 和 render() 非常重要。add() 方法用于添加图表的数据和配置项,show_config() 方法用于打印输出图表的所有配置项,render() 方法则用于生成 HTML 文件。
对于中文支持问题,建议使用文本编辑器如 Visual Studio Code,通过 Gbk 编码打开文件,然后用 UTF-8 编码保存,蓝客源码避免中文乱码。
下面是一些基本图表使用实例:
Bar(柱状图/条形图):使用 Bar.add() 方法添加数据和配置项。
Pie(饼图/环形图):使用 Pie.add() 方法添加数据和配置项。
WordCloud(词云图):使用 WordCloud.add() 方法添加数据和配置项。
Geo(地理坐标系):使用 Geo.add() 方法添加数据和配置项。
Line(折线/面积图):使用 Line.add() 方法添加数据和配置项。
Scatter(散点图):使用 Scatter.add() 方法添加数据和配置项。
Overlap(图标叠加):使用 Overlap.add() 方法添加数据和配置项,实现不同图表的叠加。
以上内容提供了 pyecharts 的基础使用方法和一些进阶功能,帮助开发者更高效地进行数据可视化。
ECharts常见图表配置
用过很多次ECharts图表,每次用的时候都要查文档,也想过进行记录,总是忙于手头工作或者因为惰性没有落实到文章,这次痛定思痛趁着假期记录下,以下代码基于echarts5.0.0版本,出于偷懒,直接copy的项目代码,简单做了调整,可以直接放到ECharts对应示例使用,注释应该是够用的,有问题欢迎留言讨论。横向柱状图//坐标轴文字样式constYDataTextStyle={ color:"#C1E0F9",fontSize:,align:"right",fontFamily:"PingFangSC-Regular",};option={ grid:{ top:,left:,bottom:,right:,},xAxis:{ type:"value",show:false,},yAxis:{ //坐标轴线axisLine:{ show:false,},//坐标轴刻度axisTick:{ show:false,},//坐标轴数据data:[{ value:"走访宣传",textStyle:YDataTextStyle},{ value:"安全隐患",textStyle:YDataTextStyle},{ value:"疫情防控",textStyle:YDataTextStyle},{ value:"市容环境",textStyle:YDataTextStyle},{ value:"出租屋管理",textStyle:YDataTextStyle},{ value:"社会秩序",textStyle:YDataTextStyle},{ value:"公共服务",textStyle:YDataTextStyle},{ value:"拆迁纠纷",textStyle:YDataTextStyle},],},series:[{ //类型type:"bar",//数据data:[,,,,,,,],//柱子宽度barWidth:,//顶部文字label:{ show:true,position:"right",valueAnimation:true,fontFamily:"youse",fontSize:,color:"#A8DAFC",//{ a}:系列名{ b}:数据名{ c}:数据值formatter:"{ c}",//距离图形距离distance:,},//是否显示柱子背景色showBackground:true,//柱子背景色样式backgroundStyle:{ color:"rgba(,,,.)",},//柱子样式itemStyle:{ //边框borderColor:"#B1F8",borderWidth:0.2,//颜色color:{ type:"linear",x:0,y:0,x2:1,y2:0,//渐变色colorStops:[{ offset:0,color:"rgba(,,,0.)",//0%处的颜色},{ offset:1,color:"rgba(,,,0.)",//%处的颜色},],},},},],};效果如下:
纵向柱状图option={ grid:{ top:,left:,bottom:,right:,},legend:{ bottom:5,data:["热线电话","巡查上报"],textStyle:{ fontFamily:"PingFangSC-Regular",fontSize:,color:"#fff",},},xAxis:[{ type:"category",axisTick:{ show:false,},axisLabel:{ color:"#C1E0F9",fontSize:,fontFamily:"PingFangSC-Regular",},data:["5月","6月","7月","8月","9月","月"],},],yAxis:[{ type:"value",position:"left",axisLine:{ show:false,//横坐标线lineStyle:{ color:"#9EACC1",opacity:0.1,},},axisLabel:{ color:"#AC",fontSize:,fontFamily:"PingFangSC-Regular",},axisTick:{ show:false,},//水平分隔线样式splitLine:{ lineStyle:{ color:"#9EACC1",opacity:0.1,},},},],series:[{ name:"热线电话",type:"bar",data:[,,,,,],//多个并排柱子设置柱子之间的间距barGap:"%",//柱子宽度barWidth:,//顶部文字label:{ show:true,position:"top",valueAnimation:true,fontFamily:"Akrobat-Black",fontSize:,color:"#DDBC",formatter:"{ c}",//距离图形距离distance:5,},//柱子样式itemStyle:{ //边框borderColor:"#E2B4",borderWidth:0.2,//颜色color:{ type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{ offset:0,color:"rgba(0,,,0.4)",//底部颜色},{ offset:1,color:"rgba(,,,0.)",//顶部颜色},],},},},{ type:"line",data:[,,,,,],lineStyle:{ opacity:0,},showSymbol:true,//顶点偏移symbolOffset:[-,0],//设定为实心点symbol:"circle",//设定实心点的大小symbolSize:5,//设定实线点的颜色color:"#DDBC",},{ name:"巡查上报",type:"bar",data:[,,,,,],//多个并排柱子设置柱子之间的间距barGap:"%",//柱子宽度barWidth:,//顶部文字label:{ show:true,position:"top",valueAnimation:true,fontFamily:"Akrobat-Black",fontSize:,color:"#FFBB",formatter:"{ c}",//距离图形距离distance:5,},//柱子样式itemStyle:{ //边框borderColor:"#FFBB",borderWidth:0.2,//颜色color:{ type:"linear",x:0,y:0,x2:0,y2:1,colorStops:[{ offset:0,color:"rgba(,,,0.)",//底部颜色},{ offset:1,color:"rgba(,,,0.)",//顶部颜色},],},},},{ type:"line",data:[,,,,,],lineStyle:{ opacity:0,},showSymbol:true,//顶点偏移symbolOffset:[,0],//设定为实心点symbol:"circle",//设定实心点的大小symbolSize:5,//设定实线点的颜色color:"#FFBB",},],};效果如下:
环形图//色值数组constcolors=['#B1FF','#DDBC','#CA','#FFBB','#EA5B','#FF'],//chart饼图色值数组colorsForChart=[],//数据数组data=[.2,.6,.6,9.6,.8,.2],//chart饼图数据数组dataForChart=[];//设计图饼图之间有间隙,所以数据之间添加固定间隙数值,颜色之间添加tranparent做饼图间隙//注:这里只是一个思路,不适合照搬colors.forEach((item,index)=>{ colorsForChart.push(item,'transparent');dataForChart.push(data[index],1.5);});colors.forEach((item,index)=>{ colorsForChart.push(item,'transparent');dataForChart.push(data[index],1.5);});option={ series:[{ type:'pie',radius:['%','%'],color:colorsForChart,label:{ show:false},data:dataForChart}]};效果如下:
仪表盘option={ series:[{ type:"gauge",//仪表盘半径radius:"%",//最小的数据值min:0,//最大的数据值max:,//仪表盘起始角度startAngle:,//仪表盘结束角度endAngle:-,//仪表盘指针样式这里用来设置仪表盘色值itemStyle:{ color:"#DDBC",},//进度条progress:{ show:true,width:3,},//仪表盘轴线axisLine:{ lineStyle:{ width:3,color:[[1,"#B"]],},},//刻度样式axisTick:{ show:false,},//分隔线样式splitLine:{ show:false,},//刻度标签axisLabel:{ show:false,},//标题title:{ show:false,},//仪表盘详情,用于显示数据detail:{ //中心偏移量offsetCenter:[0,0],//中心文字样式textStyle:{ color:"#DDBC",fontSize:},},//仪表盘指针pointer:{ show:false,},//表盘中指针的固定点anchor:{ show:false,},//系列中的数据内容数组data:[{ value:,},],},],};效果如下:
pyecharts 安装及图形绘制
安装pyecharts
pip install pyecharts
学习手册
/intro love.
图表实例:
gallery.pyecharts.org/#...
首先认识图表框架,好查对应的配置参数。
全局配置项可通过set_global_opts 方法设置
InitOpts:初始化配置项 #init_opts=
ToolBoxFeatureSaveAsImagesOpts:工具箱保存配置项
ToolBoxFeatureRestoreOpts:工具箱还原配置项
ToolBoxFeatureDataViewOpts:工具箱数据视图工具
ToolBoxFeatureDataZoomOpts:工具箱区域缩放配置项
ToolBoxFeatureMagicTypeOpts:工具箱动态类型切换配置项
ToolBoxFeatureBrushOpts:工具箱选框组件配置项
ToolBoxFeatureOpts:工具箱工具配置项
ToolboxOpts:工具箱配置项
toolbox_opts=opts.ToolboxOpts(
is_show=True,#手册中要求值时布尔型。
orient="horizontal",#参数为字符型,horizontal水平
pos_left="right",
pos_top="%",#手册中参数为字符型。
)
toolbox_opts=opts.ToolboxOpts(
is_show=True,
orient="vertical",
pos_left="right",
pos_top="5%",
)
BrushOpts:区域选择组件配置项
TitleOpts:标题配置项
DataZoomOpts:区域缩放配置项
Line()
.set_global_opts(
datazoom_opts=opts.DataZoomOpts(
is_show=True,
type_="slider",
is_realtime=True,
),
)#手册中的标题使用时标题全部小写,与opts之间用“_”线连接。如“ datazoom_opts=”,书写要正确,否则会报错。所以配置以此类推。
LegendOpts:图例配置项#legend_opts=
VisualMapOpts:视觉映射配置项 #visualmap_opts=
TooltipOpts:提示框配置项
line()
.set_global_opts(
tooltip_opts=opts.TooltipOpts(is_show=True,trigger_on="mousemove|click"),
)#
AxisLineOpts: 坐标轴轴线配置项
AxisTickOpts: 坐标轴刻度配置项
AxisPointerOpts: 坐标轴指示器配置项
AxisOpts:坐标轴配置项
SingleAxisOpts:单轴配置项
GraphicGroup:原生图形元素组件
代码:
import pandas as pd
import numpy as np
from pyecharts import options as opts
from pyecharts.charts import Line
f=pd.read_excel("F:\\数据分析2\\Excel培训\\数据源.xlsx",sheet_name="Sheet1",usecols=["订单日期","订单数量"])#读取Excel数据,只读取"订单日期","订单数量",两列
# print(f.describe())#显示统计描述
# date=f.groupby("订单日期")["订单数量"].sum()
d=f.groupby("订单日期").agg({ "订单数量":"sum"})#按日期,对订单进行求和。
# print( d.info())
print(d)
# print(d["订单数量"])
x_data =d.index#设置x轴数值
y_data =d["订单数量"]#设置y轴数值
(
Line()#申明绘制折线图
#设置全局参数:
.set_global_opts(
tooltip_opts=opts.TooltipOpts(is_show=True,trigger_on="mousemove|click"),
xaxis_opts=opts.AxisOpts(type_="category"),
yaxis_opts=opts.AxisOpts(
type_="value",
axistick_opts=opts.AxisTickOpts(is_show=True),
splitline_opts=opts.SplitLineOpts(is_show=True),
),
title_opts=opts.TitleOpts(
title="订单趋势",
title_link="",
title_target="blank",
pos_top="top",
pos_left="middle",
),
legend_opts=opts.LegendOpts(pos_left="right"),
datazoom_opts=opts.DataZoomOpts(
is_show=True,
type_="slider",
is_realtime=True,
),
toolbox_opts=opts.ToolboxOpts(
is_show=True,
orient="vertical",
pos_left="right",
pos_top="5%",
),
)
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="订单数",
y_axis=y_data,
symbol="emptyCircle",
is_symbol_show=True,
label_opts=opts.LabelOpts(is_show=True),
markpoint_opts=opts.MarkPointOpts(
data=[
opts.MarkPointItem(type_="max",name="最大值"),
opts.MarkPointItem(type_="min",name="最小值"),
]),#MarkPointOpts:标记点配置项
markline_opts=opts.MarkLineOpts(
data=[opts.MarkLineItem(type_="average", name="平均值")]
),#MarkLineOpts:标记线配置项
)
.render("basic_line_chart.html")
)
导入其他图形:
from pyecharts.charts import Bar
from pyecharts.charts import Pie
导入时首字母大写,其他小写
class _ChartType:
BAR: str = "bar"
BAR3D: str = "bar3D"
BOXPLOT: str = "boxplot"
EFFECT_SCATTER: str = "effectScatter"
FUNNEL: str = "funnel"
GAUGE: str = "gauge"
GEO: str = "geo"
GRAPH: str = "graph"
HEATMAP: str = "heatmap"
KLINE: str = "candlestick"
LINE: str = "line"
LINE3D: str = "line3D"
LINES: str = "lines"
LINES3D: str = "lines3D"
LIQUID: str = "liquidFill"
MAP: str = "map"
MAP3D: str = "map3D"
PARALLEL: str = "parallel"
PICTORIALBAR: str = "pictorialBar"
PIE: str = "pie"
POLAR: str = "polar"
RADAR: str = "radar"
SANKEY: str = "sankey"
SCATTER: str = "scatter"
SCATTER3D: str = "scatter3D"
SUNBURST: str = "sunburst"
THEMERIVER: str = "themeRiver"
TREE: str = "tree"
TREEMAP: str = "treemap"
WORDCLOUD: str = "wordCloud"
CUSTOM: str = "custom"