【四 (5)数据可视化之 Pyecharts常用图表及代码实现 】

目录

    • 文章导航
    • 一、介绍
    • [✨ 特性]
    • 二、安装Pyecharts
    • 三、主题风格
    • 四、占比类图表
      • 1、饼图
      • 2、环形图
      • 3、玫瑰图
      • 4、玫瑰图-多图
      • 5、堆叠条形图
      • 6、百分比堆叠条形图
    • 五、比较排序类
      • 1、条形图
      • 2、雷达图
      • 3、词云图
      • 4、漏斗图
    • 六、趋势类图表
      • 1、折线图
      • 2、堆叠折线图
      • 3、面积图
      • 4、堆叠面积图
    • 七、频率分布类
      • 1、直方图
      • 2、箱线图
    • 八、关系类图表
      • 1、散点图
      • 2、多图例散点图
      • 3、气泡图
      • 4、热力图
    • 九、地理类图表
      • 1、地图
    • 十、突出类图表
      • 1、仪表盘
    • 十一、组合图表
      • 1、overlap
      • 2、grid-并行多图
      • 3、page-顺序多图
      • 4、tab-选项卡多图
      • 5、timeline-时间线轮播多图

文章导航

【一 简明数据分析进阶路径介绍(文章导航)】

一、介绍

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

[✨ 特性]

  • 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
  • 囊括了 30+ 种常见图表,应有尽有
  • 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
  • 可轻松集成至 Flask,Django 等主流 Web 框架
  • 高度灵活的配置项,可轻松搭配出精美的图表
  • 详细的文档和示例,帮助开发者更快的上手项目
  • 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

二、安装Pyecharts

pip install pyecharts

三、主题风格

pyecharts有多种风格,可参考
https://pyecharts.org/#/zh-cn/themes

四、占比类图表

1、饼图

from pyecharts import options as opts
from pyecharts.charts import Pie
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv')# 按'SaleCondition'字段统计记录数  
sale_condition_counts = df['SaleCondition'].value_counts().reset_index()  
sale_condition_counts.columns = ['SaleCondition', 'Count']  # 将统计结果转换为列表,用于pyecharts饼图  
data_pair = [(row['SaleCondition'], row['Count']) for index, row in sale_condition_counts.iterrows()] c = (Pie(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add("", data_pair)#.set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"]).set_global_opts(title_opts=opts.TitleOpts(title="饼图")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

2、环形图

from pyecharts import options as opts
from pyecharts.charts import Pie
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv')# 按'SaleCondition'字段统计记录数  
sale_condition_counts = df['SaleCondition'].value_counts().reset_index()  
sale_condition_counts.columns = ['SaleCondition', 'Count']  # 将统计结果转换为列表,用于pyecharts饼图  
data_pair = [(row['SaleCondition'], row['Count']) for index, row in sale_condition_counts.iterrows()] c = (Pie(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add("", data_pair, radius=["40%", "75%"])#.set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"]).set_global_opts(title_opts=opts.TitleOpts(title="环形图")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
# 渲染图表到notebook  
c.render_notebook()

在这里插入图片描述

3、玫瑰图

from pyecharts import options as opts
from pyecharts.charts import Pie
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv')# 按'SaleCondition'字段统计记录数  
sale_condition_counts = df['SaleCondition'].value_counts().reset_index()  
sale_condition_counts.columns = ['SaleCondition', 'Count']  # 将统计结果转换为列表,用于pyecharts饼图  
data_pair = [(row['SaleCondition'], row['Count']) for index, row in sale_condition_counts.iterrows()] c = (Pie(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add("", data_pair, radius=["40%", "75%"],rosetype="area") #radius/area.set_global_opts(title_opts=opts.TitleOpts(title="玫瑰图")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
# 渲染图表到notebook  
c.render_notebook()

在这里插入图片描述

4、玫瑰图-多图

from pyecharts import options as opts
from pyecharts.charts import Pie
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv')# 按'SaleCondition'字段统计记录数  
sale_condition_counts = df['SaleCondition'].value_counts().reset_index()  
sale_condition_counts.columns = ['SaleCondition', 'Count']  # 将统计结果转换为列表,用于pyecharts饼图  
data_pair = [(row['SaleCondition'], row['Count']) for index, row in sale_condition_counts.iterrows()] c = (Pie(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add("", data_pair, radius=["40%", "75%"],center=["25%", "50%"],rosetype="area") #radius/area.add("", data_pair, radius=["40%", "75%"],center=["75%", "50%"],rosetype="area") #radius/area.set_global_opts(title_opts=opts.TitleOpts(title="玫瑰图-多图")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

5、堆叠条形图

from pyecharts import options as opts
from pyecharts.charts import Bar
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv')  result = df.groupby('YrSold').agg({  'OverallQual': 'sum',  'GarageCars': 'sum',  'FullBath': 'sum'  
}).reset_index()  result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']  result_sorted_des = result.sort_values('YrSold', ascending=True)xaxis = result_sorted_des['YrSold'].tolist()
yaxis_1 = result_sorted_des['OverallQual'].tolist()
yaxis_2 = result_sorted_des['GarageCars'].tolist()
yaxis_3 = result_sorted_des['FullBath'].tolist()c = (Bar(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add_xaxis(xaxis).add_yaxis("商家A", yaxis_1, stack="stack1").add_yaxis("商家B", yaxis_2, stack="stack1").add_yaxis("商家C", yaxis_3, stack="stack1").set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="堆叠条形图"))
)
# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

6、百分比堆叠条形图

from pyecharts import options as opts  
from pyecharts.charts import Bar  
import pandas as pd    
from pyecharts.globals import ThemeType  # 读取数据并处理  
df = pd.read_csv('train.csv')    
result = df.groupby('YrSold').agg({    'OverallQual': 'sum',    'GarageCars': 'sum',    'FullBath': 'sum'    
}).reset_index()    
result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']    
result_sorted_des = result.sort_values('YrSold', ascending=True)  # 计算每个年份的累计和  
total_per_year = result_sorted_des[['OverallQual', 'GarageCars', 'FullBath']].sum(axis=1)  # 计算每个特征的百分比  
result_sorted_des['OverallQual_pct'] = (result_sorted_des['OverallQual'] / total_per_year).round(2) * 100  
result_sorted_des['GarageCars_pct'] = (result_sorted_des['GarageCars'] / total_per_year).round(2) * 100  
result_sorted_des['FullBath_pct'] = (result_sorted_des['FullBath'] / total_per_year).round(2) * 100  # 提取数据用于图表  
xaxis = result_sorted_des['YrSold'].tolist()  
yaxis_1 = result_sorted_des['OverallQual_pct'].tolist()  
yaxis_2 = result_sorted_des['GarageCars_pct'].tolist()  
yaxis_3 = result_sorted_des['FullBath_pct'].tolist()  # 创建百分比堆叠条形图  
c = (  Bar(init_opts=opts.InitOpts(theme=ThemeType.WALDEN))  .add_xaxis(xaxis)  .add_yaxis("OverallQual", yaxis_1, stack="stack1")  .add_yaxis("GarageCars", yaxis_2, stack="stack1")  .add_yaxis("FullBath", yaxis_3, stack="stack1")  .set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="right",formatter="{c}%", rotate=0))  # 显示百分比  .set_global_opts(tooltip_opts=opts.TooltipOpts(is_show=True, trigger="item"),title_opts=opts.TitleOpts(title="百分比堆叠条形图"))  
)  # 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

五、比较排序类

1、条形图

from pyecharts import options as opts
from pyecharts.charts import Bar
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv')  result = df.groupby('YrSold').agg({  'OverallQual': 'sum',  'GarageCars': 'sum',  'FullBath': 'sum'  
}).reset_index()  result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']  result_sorted_desc = result.sort_values('YrSold', ascending=False)xaxis = result_sorted_desc['YrSold'].tolist()
yaxis_1 = result_sorted_desc['OverallQual'].tolist()
yaxis_2 = result_sorted_desc['GarageCars'].tolist()
yaxis_3 = result_sorted_desc['FullBath'].tolist()c = (Bar(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add_xaxis(xaxis).add_yaxis("商家A", yaxis_1).add_yaxis("商家B", yaxis_2).add_yaxis("商家C", yaxis_3)
#     .reversal_axis()  # 坐标轴反转.set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="条形图"))
)
# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

2、雷达图

from pyecharts import options as opts
from pyecharts.charts import Radar
from pyecharts.globals import ThemeType  v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]
c = (Radar(init_opts=opts.InitOpts(theme=ThemeType.WALDEN)).add_schema(schema=[opts.RadarIndicatorItem(name="销售", max_=6500),opts.RadarIndicatorItem(name="管理", max_=16000),opts.RadarIndicatorItem(name="信息技术", max_=30000),opts.RadarIndicatorItem(name="客服", max_=38000),opts.RadarIndicatorItem(name="研发", max_=52000),opts.RadarIndicatorItem(name="市场", max_=25000),]).add("预算分配", v1,areastyle_opts=opts.AreaStyleOpts(opacity=0.1,color="#CD0000"),linestyle_opts=opts.LineStyleOpts(color="#CD0000")).add("实际开销", v2,areastyle_opts=opts.AreaStyleOpts(opacity=0.2,color="#5CACEE"),linestyle_opts=opts.LineStyleOpts(color="#5CACEE")).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(#legend_opts=opts.LegendOpts(selected_mode="single"),title_opts=opts.TitleOpts(title="雷达图"),))# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

3、词云图

from pyecharts import options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolTypewords = [("Sam S Club", 10000),("Macys", 6181),("Amy Schumer", 4386),("Jurassic World", 4055),("Charter Communications", 2467),("Chick Fil A", 2244),("Planet Fitness", 1868),("Pitch Perfect", 1484),("Express", 1112),("Home", 865),("Johnny Depp", 847),("Lena Dunham", 582),("Lewis Hamilton", 555),("KXAN", 550),("Mary Ellen Mark", 462),("Farrah Abraham", 366),("Rita Ora", 360),("Serena Williams", 282),("NCAA baseball tournament", 273),("Point Break", 265),
]
c = (WordCloud(init_opts=opts.InitOpts(theme=ThemeType.WALDEN)).add("", words, word_size_range=[20, 100], shape=SymbolType.DIAMOND).set_global_opts(title_opts=opts.TitleOpts(title="词云图"))
)# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

4、漏斗图

import pyecharts.options as opts
from pyecharts.charts import Funnelx_data = ["展现", "点击", "访问", "咨询", "订单"]
y_data = [100, 80, 60, 40, 20]data = [[x_data[i], y_data[i]] for i in range(len(x_data))]c = (Funnel().add(series_name="",data_pair=data,gap=2,tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{b} : {c}%"),label_opts=opts.LabelOpts(is_show=True, position="inside"),itemstyle_opts=opts.ItemStyleOpts(border_color="#fff", border_width=1),).set_global_opts(title_opts=opts.TitleOpts(title="漏斗图", subtitle="漏斗图")).set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="right",formatter="{c}", rotate=0))  # 显示内容
)# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

六、趋势类图表

1、折线图

from pyecharts import options as opts
from pyecharts.charts import Line
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv')  result = df.groupby('YrSold').agg({  'OverallQual': 'sum',  'GarageCars': 'sum',  'FullBath': 'sum'  
}).reset_index()  result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']  result_sorted_desc = result.sort_values('YrSold', ascending=False)xaxis = result_sorted_desc['YrSold'].tolist()
xaxis = [str(i) for i in xaxis]  #x轴不能用数字 
yaxis_1 = result_sorted_desc['OverallQual'].tolist()
yaxis_2 = result_sorted_desc['GarageCars'].tolist()
yaxis_3 = result_sorted_desc['FullBath'].tolist()c = (Line(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add_xaxis(xaxis).add_yaxis("OverallQual", yaxis_1).add_yaxis("GarageCars", yaxis_2).add_yaxis("FullBath", yaxis_3)#.set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="折线图"))
)
# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

2、堆叠折线图

from pyecharts import options as opts
from pyecharts.charts import Line
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv')  result = df.groupby('YrSold').agg({  'OverallQual': 'sum',  'GarageCars': 'sum',  'FullBath': 'sum'  
}).reset_index()  result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']  result_sorted_desc = result.sort_values('YrSold', ascending=False)xaxis = result_sorted_desc['YrSold'].tolist()
xaxis = [str(i) for i in xaxis]  #x轴不能用数字 
yaxis_1 = result_sorted_desc['OverallQual'].tolist()
yaxis_2 = result_sorted_desc['GarageCars'].tolist()
yaxis_3 = result_sorted_desc['FullBath'].tolist()c = (Line(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add_xaxis(xaxis_data=xaxis).add_yaxis(series_name="OverallQual",stack="总量",y_axis=yaxis_1,
#         areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="GarageCars",stack="总量",y_axis=yaxis_2,
#         areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="FullBath",stack="总量",y_axis=yaxis_3,
#         areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).set_global_opts(title_opts=opts.TitleOpts(title="堆叠折线图"),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),yaxis_opts=opts.AxisOpts(type_="value",axistick_opts=opts.AxisTickOpts(is_show=True),splitline_opts=opts.SplitLineOpts(is_show=True),),xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),)
)
# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

3、面积图

from pyecharts import options as opts
from pyecharts.charts import Line
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv')  result = df.groupby('YrSold').agg({  'OverallQual': 'sum',  'GarageCars': 'sum',  'FullBath': 'sum'  
}).reset_index()  result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']  result_sorted_desc = result.sort_values('YrSold', ascending=False)xaxis = result_sorted_desc['YrSold'].tolist()
xaxis = [str(i) for i in xaxis]  #x轴不能用数字 
yaxis_1 = result_sorted_desc['OverallQual'].tolist()
yaxis_2 = result_sorted_desc['GarageCars'].tolist()
yaxis_3 = result_sorted_desc['FullBath'].tolist()c = (Line(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add_xaxis(xaxis).add_yaxis("OverallQual", yaxis_1, areastyle_opts=opts.AreaStyleOpts(opacity=0.5)).add_yaxis("GarageCars", yaxis_2, areastyle_opts=opts.AreaStyleOpts(opacity=0.5)).add_yaxis("FullBath", yaxis_3, areastyle_opts=opts.AreaStyleOpts(opacity=0.5))#.set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="面积图"))
)
# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

4、堆叠面积图

from pyecharts import options as opts
from pyecharts.charts import Line
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv')  result = df.groupby('YrSold').agg({  'OverallQual': 'sum',  'GarageCars': 'sum',  'FullBath': 'sum'  
}).reset_index()  result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']  result_sorted_desc = result.sort_values('YrSold', ascending=False)xaxis = result_sorted_desc['YrSold'].tolist()
xaxis = [str(i) for i in xaxis]  #x轴不能用数字 
yaxis_1 = result_sorted_desc['OverallQual'].tolist()
yaxis_2 = result_sorted_desc['GarageCars'].tolist()
yaxis_3 = result_sorted_desc['FullBath'].tolist()c = (Line(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add_xaxis(xaxis_data=xaxis).add_yaxis(series_name="OverallQual",stack="总量",y_axis=yaxis_1,areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="GarageCars",stack="总量",y_axis=yaxis_2,areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="FullBath",stack="总量",y_axis=yaxis_3,areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).set_global_opts(title_opts=opts.TitleOpts(title="堆叠面积图"),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),yaxis_opts=opts.AxisOpts(type_="value",axistick_opts=opts.AxisTickOpts(is_show=True),splitline_opts=opts.SplitLineOpts(is_show=True),),xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),)
)
# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

七、频率分布类

1、直方图

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Fakerdf = pd.read_csv('train.csv').head(100)sale_condition_counts = df['YearBuilt'].value_counts().reset_index()  
sale_condition_counts.columns = ['YearBuilt', 'Count']x_data = sale_condition_counts.YearBuilt.tolist()
y_data = sale_condition_counts.Count.tolist()c = (Bar(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add_xaxis(x_data).add_yaxis("Count", y_data, category_gap=0).set_global_opts(title_opts=opts.TitleOpts(title="直方图"))
)# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

2、箱线图

from pyecharts import options as opts
from pyecharts.charts import Boxplotv1 = [[850, 740, 900, 1070, 930, 850, 950, 980, 980, 880, 1000, 980],[960, 940, 960, 940, 880, 800, 850, 880, 900, 840, 830, 790],
]
v2 = [[890, 810, 810, 820, 800, 770, 760, 740, 750, 760, 910, 920],[890, 840, 780, 810, 760, 810, 790, 810, 820, 850, 870, 870],
]c = (Boxplot(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add_xaxis(["expr1", "expr2"]).add_yaxis("A", v1).add_yaxis("B", v2).set_global_opts(title_opts=opts.TitleOpts(title="箱线图"))
)# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

八、关系类图表

1、散点图

from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv').head(100)  
df = df.sort_values('GrLivArea', ascending=True)
df[['SalePrice', 'OverallQual', 'GrLivArea', 'GarageCars', 'TotalBsmtSF', 'FullBath', 'YearBuilt']]
x_data = df.GrLivArea.to_list()
x_data = [str(i) for i in x_data]  #x轴不能用数字 
y_data = df.SalePrice.to_list()c = (Scatter(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add_xaxis(x_data).add_yaxis("GrLivArea", y_data).set_series_opts(label_opts=opts.LabelOpts(is_show=False, position="right",formatter="{c}", rotate=0))    .set_global_opts(title_opts=opts.TitleOpts(title="散点图"),visualmap_opts=opts.VisualMapOpts(max_=500000, min_=100000),)
)# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

2、多图例散点图

from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv').head(100)  
df = df.sort_values('GrLivArea', ascending=True)
df[['SalePrice', 'OverallQual', 'GrLivArea', 'GarageCars', 'TotalBsmtSF', 'FullBath', 'YearBuilt']]
x_data = df.SalePrice.to_list()
x_data = [str(i) for i in x_data]  #x轴不能用数字 
y_data = df.GrLivArea.to_list()
y_data1 = df.YearBuilt.to_list()c = (Scatter(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add_xaxis(x_data).add_yaxis("GrLivArea", y_data).add_yaxis("YearBuilt", y_data1).set_series_opts(label_opts=opts.LabelOpts(is_show=False, position="right",formatter="{c}", rotate=0))    .set_global_opts(title_opts=opts.TitleOpts(title="散点图"),visualmap_opts=opts.VisualMapOpts(max_=500000, min_=100000),)
)# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

3、气泡图

from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker
import pandas as pd  
from pyecharts.globals import ThemeTypedf = pd.read_csv('train.csv').head(100)  
df = df.sort_values('GrLivArea', ascending=True)
df[['SalePrice', 'OverallQual', 'GrLivArea', 'GarageCars', 'TotalBsmtSF', 'FullBath', 'YearBuilt']]
x_data = df.GrLivArea.to_list()
x_data = [str(i) for i in x_data]  #x轴不能用数字 
y_data = df.SalePrice.to_list()c = (Scatter(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add_xaxis(x_data).add_yaxis("GrLivArea", y_data).set_series_opts(label_opts=opts.LabelOpts(is_show=False, position="right",formatter="{c}", rotate=0))    .set_global_opts(title_opts=opts.TitleOpts(title="气泡图"),visualmap_opts=opts.VisualMapOpts(type_="size",max_=500000, min_=100000),)
)# 渲染图表到notebook  
c.render_notebook()

在这里插入图片描述

4、热力图

from pyecharts.charts import HeatMap  
from pyecharts import options as opts  
import pandas as pd  # 读取CSV文件的前100行  
df = pd.read_csv('train.csv').head(100)  # 选择你关心的列  
df_date = df[['SalePrice', 'OverallQual', 'GrLivArea', 'GarageCars', 'TotalBsmtSF', 'FullBath', 'YearBuilt']]  # 计算相关性矩阵,确保没有缺失值  
correlation_matrix = df_date.corr().dropna(axis=0, how='any').dropna(axis=1, how='any')  # 初始化一个空列表来存储三元组  
triplets = []  for i in range(correlation_matrix.shape[0]):  for j in range(correlation_matrix.shape[1]):  # 获取 x 坐标(列名)和 y 坐标(列名)  x = i  y = j # 获取数据值(相关性系数)  value = round(correlation_matrix.iloc[i, j], 2)triplets.append((x, y, value))          # 创建热力图  
c = (  HeatMap(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))  .add_xaxis(correlation_matrix.columns.tolist())  .add_yaxis(  "相关性",  correlation_matrix.index.tolist(),  triplets,  label_opts=opts.LabelOpts(is_show=True, position="inside"),  )  .set_global_opts(  title_opts=opts.TitleOpts(title="热力图"),  visualmap_opts=opts.VisualMapOpts(min_=-1, max_=1),  # 设置最小值和最大值以反映相关性范围  )  
)  # 渲染图表到notebook  
c.render_notebook()

在这里插入图片描述

九、地理类图表

1、地图

from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Fakerx_data = ['杭州市','衢州市','湖州市','嘉兴市','宁波市','绍兴市','台州市','温州市','丽水市','金华市','舟山市']
y_data = [4000,2000,1800,2100,3500,3000,3000,3500,1500,2000,1000]c = (Map(init_opts=opts.InitOpts( theme=ThemeType.WALDEN)).add("销量", [list(z) for z in zip(x_data, y_data)], "浙江").set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="center",formatter="{b}{c}", rotate=0))    .set_global_opts(title_opts=opts.TitleOpts(title="地图"),visualmap_opts=opts.VisualMapOpts(max_=4000),)
)# 渲染图表到notebook  
c.render_notebook()

在这里插入图片描述

十、突出类图表

1、仪表盘

from pyecharts import options as opts  
from pyecharts.charts import Gauge  
from pyecharts.globals import ThemeType# 创建并配置Gauge实例  
gauge = (  Gauge(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))  .add(  "业务指标",  [("完成率", 55.5)],  split_number=5,  axisline_opts=opts.AxisLineOpts(  linestyle_opts=opts.LineStyleOpts(  color=[(0.3, "#67e0e3"), (0.7, "#37a2da"), (1, "#fd666d")], width=30  )  ),  detail_label_opts=opts.LabelOpts(formatter="{value}"),  )  .set_global_opts(  title_opts=opts.TitleOpts(title="仪表盘"),  legend_opts=opts.LegendOpts(is_show=False),  )  
)  # 渲染图表到notebook  
gauge.render_notebook()  

在这里插入图片描述

十一、组合图表

1、overlap

import pandas as pd
from pyecharts.globals import ThemeType
from pyecharts.charts import Line, Grid
from pyecharts import options as opts
from pyecharts.charts import Bar周期 = ['202340', '202341', '202342', '202343', '202344', '202345', '202346', '202347', '202348', '202349', '202350', '202351']
浏览 = ['20', '49', '53', '57', '43', '52', '56', '60', '80', '56', '59', '35']
点击 = ['4', '14', '4', '2', '13', '7', '6', '5', '11', '4', '8', '0']
购买 = ['0', '0', '1', '0', '3', '1', '1', '1', '1', '3', '3', '1']
总量 = ['24', '63', '58', '59', '59', '60', '63', '66', '92', '63', '70', '36']bar = (Bar(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT)).add_xaxis(周期).add_yaxis('浏览', 浏览, stack='stack1', color='#5aa5b4', category_gap="40%").add_yaxis('点击', 点击, stack='stack1', color='#FFFF00', category_gap="40%").add_yaxis('购买', 购买, stack='stack1', color='#FF6347', category_gap="40%").set_series_opts(label_opts=opts.LabelOpts(position="right",formatter='{c}')).set_global_opts(title_opts=opts.TitleOpts(title='overlap'),# xaxis_opts=opts.AxisOpts(name='地市'),# visualmap_opts=opts.VisualMapOpts(max_=150),# toolbox_opts=opts.ToolboxOpts(),#  datazoom_opts=opts.DataZoomOpts(),xaxis_opts=opts.AxisOpts(name_rotate=60, axislabel_opts={"rotate": 45}))
)line = (Line(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT)).add_xaxis(周期).add_yaxis("总量",总量,# markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
#         markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=38)]),).set_global_opts(title_opts=opts.TitleOpts(title=""))
)overlap1 = bar.overlap(line)
overlap1.render_notebook()

在这里插入图片描述

2、grid-并行多图

import pandas as pd
from pyecharts.globals import ThemeType
from pyecharts.charts import Line, Grid
from pyecharts import options as opts
from pyecharts.charts import Bar周期 = ['202340', '202341', '202342', '202343', '202344', '202345', '202346', '202347', '202348', '202349', '202350', '202351']
浏览 = ['20', '49', '53', '57', '43', '52', '56', '60', '80', '56', '59', '35']
点击 = ['4', '14', '4', '2', '13', '7', '6', '5', '11', '4', '8', '0']
购买 = ['0', '0', '1', '0', '3', '1', '1', '1', '1', '3', '3', '1']
总量 = ['24', '63', '58', '59', '59', '60', '63', '66', '92', '63', '70', '36']bar = (Bar(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT)).add_xaxis(周期).add_yaxis('浏览', 浏览, stack='stack1', color='#5aa5b4', category_gap="40%").add_yaxis('点击', 点击, stack='stack1', color='#FFFF00', category_gap="40%").add_yaxis('购买', 购买, stack='stack1', color='#FF6347', category_gap="40%").set_series_opts(label_opts=opts.LabelOpts(position="right",formatter='{c}')).set_global_opts(title_opts=opts.TitleOpts(title='并行多图'),# xaxis_opts=opts.AxisOpts(name='地市'),# visualmap_opts=opts.VisualMapOpts(max_=150),# toolbox_opts=opts.ToolboxOpts(),#  datazoom_opts=opts.DataZoomOpts(),xaxis_opts=opts.AxisOpts(name_rotate=60, axislabel_opts={"rotate": 45}))
)line = (Line(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT)).add_xaxis(周期).add_yaxis("总量",总量,# markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
#         markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=38)]),).set_global_opts(title_opts=opts.TitleOpts(title=""))
)grid = (Grid(init_opts=opts.InitOpts(width="860px", height="600px", theme=ThemeType.LIGHT)).add(bar, grid_opts=opts.GridOpts(pos_top="50%", pos_right="10%")).add(line, grid_opts=opts.GridOpts(pos_left="10%", pos_bottom="50%"))
)grid.render_notebook()

在这里插入图片描述

3、page-顺序多图

from pyecharts.charts import Page
import pandas as pd
from pyecharts.globals import ThemeType
from pyecharts.charts import Line, Tab
from pyecharts import options as opts
from pyecharts.charts import Bar周期 = ['202340', '202341', '202342', '202343', '202344', '202345', '202346', '202347', '202348', '202349', '202350', '202351']
浏览 = ['20', '49', '53', '57', '43', '52', '56', '60', '80', '56', '59', '35']
点击 = ['4', '14', '4', '2', '13', '7', '6', '5', '11', '4', '8', '0']
购买 = ['0', '0', '1', '0', '3', '1', '1', '1', '1', '3', '3', '1']
总量 = ['24', '63', '58', '59', '59', '60', '63', '66', '92', '63', '70', '36']bar = (Bar(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT)).add_xaxis(周期).add_yaxis('浏览', 浏览, stack='stack1', color='#5aa5b4', category_gap="40%").add_yaxis('点击', 点击, stack='stack1', color='#FFFF00', category_gap="40%").add_yaxis('购买', 购买, stack='stack1', color='#FF6347', category_gap="40%").set_series_opts(label_opts=opts.LabelOpts(position="right",formatter='{c}')).set_global_opts(title_opts=opts.TitleOpts(title='顺序多图'),d# xaxis_opts=opts.AxisOpts(name='地市'),# visualmap_opts=opts.VisualMapOpts(max_=150),# toolbox_opts=opts.ToolboxOpts(),#  datazoom_opts=opts.DataZoomOpts(),xaxis_opts=opts.AxisOpts(name_rotate=60, axislabel_opts={"rotate": 45}))
)line = (Line(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT)).add_xaxis(周期).add_yaxis("总量",总量,# markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
#         markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=38)]),).set_global_opts(title_opts=opts.TitleOpts(title=""))
)def page_draggable_layout():# page = Page(layout=Page.SimplePageLayout)  #  不可拖动page = Page(layout=Page.DraggablePageLayout)  # 可拖动page.add(bar,line)page.render_notebook()page.render("C:/Users/Mirror/Desktop/下载/pyecharts/顺序多图.html")  if __name__ == "__main__":page_draggable_layout()

在这里插入图片描述

4、tab-选项卡多图

import pandas as pd
from pyecharts.globals import ThemeType
from pyecharts.charts import Line, Tab
from pyecharts import options as opts
from pyecharts.charts import Bar周期 = ['202340', '202341', '202342', '202343', '202344', '202345', '202346', '202347', '202348', '202349', '202350', '202351']
浏览 = ['20', '49', '53', '57', '43', '52', '56', '60', '80', '56', '59', '35']
点击 = ['4', '14', '4', '2', '13', '7', '6', '5', '11', '4', '8', '0']
购买 = ['0', '0', '1', '0', '3', '1', '1', '1', '1', '3', '3', '1']
总量 = ['24', '63', '58', '59', '59', '60', '63', '66', '92', '63', '70', '36']bar = (Bar(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT)).add_xaxis(周期).add_yaxis('浏览', 浏览, stack='stack1', color='#5aa5b4', category_gap="40%").add_yaxis('点击', 点击, stack='stack1', color='#FFFF00', category_gap="40%").add_yaxis('购买', 购买, stack='stack1', color='#FF6347', category_gap="40%").set_series_opts(label_opts=opts.LabelOpts(position="right",formatter='{c}')).set_global_opts(title_opts=opts.TitleOpts(title='选项卡多图'),# xaxis_opts=opts.AxisOpts(name='地市'),# visualmap_opts=opts.VisualMapOpts(max_=150),# toolbox_opts=opts.ToolboxOpts(),#  datazoom_opts=opts.DataZoomOpts(),xaxis_opts=opts.AxisOpts(name_rotate=60, axislabel_opts={"rotate": 45}))
)line = (Line(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT)).add_xaxis(周期).add_yaxis("总量",总量,# markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
#         markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=38)]),).set_global_opts(title_opts=opts.TitleOpts(title=""))
)tab = Tab()
tab.add(bar, "bar-example")
tab.add(line, "line-example")tab.render_notebook()

在这里插入图片描述

5、timeline-时间线轮播多图

import pandas as pd
from pyecharts.globals import ThemeType
from pyecharts.charts import Timeline, Pie
from pyecharts import options as opts
dict ={
'202212': [['电脑', 1], ['电视', 13], ['冰箱', 8],['空调', 8],['洗衣机', 8]], 
'202301': [['电脑', 2], ['电视', 12], ['冰箱', 5],['空调', 3],['洗衣机', 8]], 
'202302': [['电脑', 3], ['电视', 11], ['冰箱', 8],['空调', 18],['洗衣机', 8]], 
'202303': [['电脑', 4], ['电视', 10], ['冰箱', 8],['空调', 8],['洗衣机', 2]], 
'202304': [['电脑', 5], ['电视', 9], ['冰箱', 8],['空调', 8],['洗衣机', 8]], 
'202305': [['电脑', 6], ['电视', 8], ['冰箱', 9],['空调', 8],['洗衣机', 8]], 
'202306': [['电脑', 7], ['电视', 7], ['冰箱', 8],['空调', 7],['洗衣机', 5]], 
'202307': [['电脑', 8], ['电视', 6], ['冰箱', 8],['空调', 8],['洗衣机', 8]], 
'202308': [['电脑', 9], ['电视', 1], ['冰箱', 8],['空调', 8],['洗衣机', 9]], 
'202309': [['电脑', 10], ['电视', 5], ['冰箱', 7],['空调', 7],['洗衣机', 8]], 
'202310': [['电脑', 11], ['电视', 4], ['冰箱', 8],['空调', 8],['洗衣机', 4]], 
'202311': [['电脑', 12], ['电视', 3], ['冰箱', 18],['空调', 8],['洗衣机', 8]], 
'202312': [['电脑', 13], ['电视', 2], ['冰箱', 8],['空调', 8],['洗衣机', 3]]
}
tl_001 = Timeline(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT))           
for date, data in dict.items():pie = (Pie().add("数量",data,rosetype="radius",radius=["30%", "55%"],).set_global_opts(legend_opts=opts.LegendOpts(is_show=False),visualmap_opts=opts.VisualMapOpts(max_=10, item_width=15, item_height=80),title_opts=opts.TitleOpts("每月家电销售情况 (时间: {}月 )".format(date)),))tl_001.add(pie, "{}".format(date))    tl_001.render_notebook()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2869995.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

创建硬件企业的8个要求

目录 内容简介 1. 长期愿景和目标 2. 适应和学习能力 3. 能够理解技术方面的信息 4. 建立关系的能力 5. 现金流 6. 可用时间和资金平衡 7. 一次专注于一种产品 8. 实现长期成功的耐心 CSDN学院 专栏作家 内容简介 为了创建成功的硬件产品,你需要具备各种…

如何在Windows系统搭建Emby影音平台并实现远程访问本地文件【内网穿透】

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中,观看视频绝对是主力应用场景之一&…

Linux系统安全②SNAT与DNAT

目录 一.SNAT 1.定义 2.实验环境准备 (1)三台服务器:PC1客户端、PC2网关、PC3服务端。 (2)硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡 (3)网络模式要求:PC1…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的自动驾驶目标检测系统详解(深度学习+Python代码+PySide6界面+训练数据集)

摘要:开发自动驾驶目标检测系统对于提高车辆的安全性和智能化水平具有至关重要的作用。本篇博客详细介绍了如何运用深度学习构建一个自动驾驶目标检测系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并对比了YOLOv7、YOLOv6、YOLO…

IntelliJ IDEA 2023.3.4创建JavaWeb应用和集成Tomcat服务器

1. 创建项目 如下图所示,只需要给项目起一个项目名称,然后点击Create即可: 2. Project Structure 设置 创建完成后如下图 3. 集成Tomcat服务器 4. 实现Servlet接口 当我们实现Servlet接口时,发现没有Servlet相关的依赖时&am…

AcWing 2. 01背包问题

题目描述 解题思路: 相关代码: import java.util.Scanner; public class Main {public static void main(String[] args){Scanner scanner new Scanner(System.in);/** 背包问题的物品下标最好从1开始。* *//*定义一f[i][j]数组,i表示的…

PDF Expert:强大注释与批注功能,让PDF阅读更高效

PDF Expert软件是一款功能丰富且强大的PDF编辑和管理工具,为用户提供了全面的PDF处理解决方案。以下是其主要的功能特色介绍: PDF编辑功能:PDF Expert允许用户对PDF文件进行深度编辑。这包括但不限于添加、删除、重新排列和合并页面&#xff…

SQLiteC/C++接口详细介绍之sqlite3类(十四)

返回目录:SQLite—免费开源数据库系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(十三) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(十五) 43.sqlite3_preupdate_hook sqlite3_preup…

Camtasia 2023 中文MacOS

Camtasia 2023软件在录屏软件中的确表现突出,可以说是佼佼者之一。这款软件不仅功能强大,而且操作简便,适用于各种屏幕录制和视频编辑需求。 一、屏幕录制与视频导入 Camtasia 2023提供了高清的屏幕录制功能,可以轻松地捕捉电脑…

SpringCloud-深度理解ElasticSearch

一、Elasticsearch概述 1、Elasticsearch介绍 Elasticsearch(简称ES)是一个开源的分布式搜索和分析引擎,构建在Apache Lucene基础上。它提供了一个强大而灵活的工具,用于全文搜索、结构化搜索、分析以及数据可视化。ES最初设计用…

应用程序开发教学:医保购药系统源码搭建实战

医保购药系统作为医疗服务的重要组成部分,其开发不仅能够为患者提供更加便捷的购药服务,还能够提高医疗机构的管理效率。接下来,小编将为您讲解医保购药系统的源码搭建过程,介绍应用程序开发的基本步骤和技巧。 一、系统设计 我…

矩阵中移动的最大次数

文章目录 所属专栏:BFS算法 题目链接 思路如下: 1.首先我们需要从第一列开始遍历,寻找每一个都能够满足条件的位置,将它插入到数组里面 2.第一列遍历完了后我们先判断第一列的数是否都满足条件插入到数组里面,如果数组为空&#…

关于微信公众号的一些个心得(持续更新)

微信公众号也是写一些个人心得,也不指望有人关注什么的,如果在一个领域可以深耕的话也希望可以做一些分享。目前也就是写一些心得和体验,摘抄一类的。 字体大小和排版什么的有没有人有经验啊 安装编辑插件,以chorme浏览器为例&a…

ClickHouse:一款高效且强大的列式数据库管理系统

ClickHouse是一款开源的列式数据库管理系统,专为大规模数据仓库和数据分析应用而设计。它允许用户快速地存储和处理海量数据,同时提供了简单易用的SQL接口。本文将介绍ClickHouse的概念、技术原理以及使用案例,并探讨其优势和挑战。 一、引言…

从SLC 到 MLC、TLC颗粒

*以下是个人对相关基础知识的梳理和总结,对于高度专业性的知识个人理解可能会有出入,如果有误,希望各位大佬不吝指教; 1.SLC 颗粒 (Single-Level Cell) SLC颗粒每个储存单元只存储一个信息位(即…

VMware Fusion 13.5.1 OEM BIOS Version - 在 macOS 中运行 Windows 虚拟机的最佳方式

VMware Fusion 13.5.1 OEM BIOS Version VMware Fusion 13 原版 App 中集成 OEM BIOS 请访问原文链接:https://sysin.org/blog/vmware-fusion-13-oem/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 使用 VMware …

世界环境绩效指数EPI数据集(2000-2022年)

环境绩效指数(EPI)是由耶鲁大学和哥伦比亚大学联合发布的一项综合指标,旨在衡量世界各国在可持续环境管理方面的表现。覆盖2000年至2022年,EPI通过分析各国在多个维度上的环境政策执行成效,包括空气质量、水资源管理、…

RequestResponse使用

文章目录 一、Request&Response介绍二、Request 继承体系三、Request 获取请求数据1、获取请求数据方法(1)、请求行(2)、请求头(3)、请求体 2、通过方式获取请求参数3、IDEA模板创建Servlet4、请求参数…

第二百零六回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"给geolocator插件提交问题的结果"相关的内容,本章回中将介绍自定义标题栏.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我…

Rancher操作手册(v2.7.5-rc1)

1.登录 访问地址:10.66.55.132使用账号和密码登录。初始的页面是英文版本,可以点击左下方改为简体中文 登录成功后可以看到现有的集群。右上角可以进行新集群的创建和导入已有集群。点击箭头所指的蓝色集群名称可以进入集群。 2.集群仪表盘 进入到集…