可视化 | Pyecharts 单轴散点图(附完整代码)

简介: 可视化 | Pyecharts 单轴散点图(附完整代码)


大家好,我是欧K~。

本期主要利用pyecharts给大家展示单轴散点图的画法,希望对你有所帮助。

1. 示例数据

生成随机数据:

# 生成每周日期数据
hours = [str(i)+'h' for i in range(24)]
week_days = ['Sunday','Saturday', 'Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday'];
data_days = [i for i in range(len(week_days))]
data_hours = [i for i in range(len(hours))]
# 随机生成每天每小时数据
data_points = [random.randint(0, 10) for j in range(len(week_days)) for i in range(len(hours))]
week_hours = [list(i) for i in itertools.product(data_days, data_hours)]
data_lastest = np.c_[week_hours,data_points].tolist()

示例数据(2*3):


2. 基础散点图

以Sunday为例:

# 基本散点图
scatter = Scatter(init_opts=opts.InitOpts(width='900px', height='400px', theme='light'))
scatter.add_xaxis(xaxis_data=hours)
scatter.add_yaxis('',
                y_axis=[item[2] for item in data_lastest if item[0] == 0],
                symbol_size=JsCode('function(p) { return p[1] * 4;}'),
                label_opts=opts.LabelOpts(is_show=False),
                )
scatter.set_global_opts(xaxis_opts=opts.AxisOpts(is_show=True),
                      yaxis_opts=opts.AxisOpts(is_show=True),
                      title_opts=opts.TitleOpts(title='Sunday'),
                      )
scatter.render_notebook()

效果:


3. 单轴散点图

所有点设置一行(单轴):

# 单轴散点图
single_axis, titles = [], []
scatter = Scatter(init_opts=opts.InitOpts(width='900px', height='400px', theme='light'))
scatter.add_xaxis(xaxis_data=hours)
# 单轴配置
single_axis.append({"left":'15%',
                    "name": 'Sunday',
                    "nameGap": 20,
                    "nameLocation": 'start',
                    "type": 'category',
                    "boundaryGap": False,
                    "data": hours,
                    "top": '15%',
                    "height": '10%',
                    "gridIndex": 0,
                    "nameTextStyle": {"fontSize": 16},
                    "axisLabel": { "interval": 2 }
                    })
scatter.add_yaxis('',
                y_axis=[item[2] for item in data_lastest if item[0] == 0],
                symbol_size=JsCode('function(p) { return p[1] * 4;}'),
                label_opts=opts.LabelOpts(is_show=False),
                )
scatter.options['series'][0]['coordinateSystem'] = 'singleAxis'
scatter.options['series'][0]['singleAxisIndex'] = 0
scatter.options['singleAxis'] = single_axis
scatter.set_global_opts(xaxis_opts=opts.AxisOpts(is_show=False),
                      yaxis_opts=opts.AxisOpts(is_show=False),
                      )
scatter.render_notebook()

效果:


4. 单轴叠加

叠加所有时间数据:

single_axis, titles = [], []
scatter = Scatter(init_opts=opts.InitOpts(width='900px', height='400px', theme='light'))
for idx, day in enumerate(week_days):
    pers = 100 / len(week_days)
    scatter.add_xaxis(xaxis_data=hours)
    # 单轴配置
    single_axis.append({"left": '10%',
                        "nameGap": 20,
                        "nameLocation": 'start',
                        "type": 'category',
                        "boundaryGap": False,
                        "data": hours,
                        "top": '{}%'.format(idx * pers + 5),
                        "height": '{}%'.format(pers - 10),
                        "gridIndex": idx,
                        "nameTextStyle": {"fontSize": 16},
                        "axisLabel": { "interval": 2 }
                        })
    titles.append(dict(text=day,top='{}%'.format(idx * pers + 5), left='2%'))
    scatter.add_yaxis('',
                    y_axis=[item[2] for item in data_lastest if item[0] == idx],
                    symbol_size=JsCode('function(p) { return p[1] * 4;}'),
                    label_opts=opts.LabelOpts(is_show=False),
                    )
    scatter.options['series'][idx]['coordinateSystem'] = 'singleAxis'
    scatter.options['series'][idx]['singleAxisIndex'] = idx
# 标题
scatter.options['singleAxis'] = single_axis
scatter.set_global_opts(
    xaxis_opts=opts.AxisOpts(is_show=False),
    yaxis_opts=opts.AxisOpts(is_show=False),
    title_opts=titles
    )
scatter.render_notebook()

效果:

所有参数均可以根据实际需要调整。

END


以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享让更多人知道

相关文章
|
JavaScript 数据可视化 定位技术
手把手教你用Pyecharts绘制地图~
大家好,我是志斌~ 今天来给大家分享一下如何用Pyecharts绘制地图。
2731 0
|
数据采集 机器学习/深度学习 数据可视化
数据科学项目实战:完整的Python数据分析流程案例解析
【4月更文挑战第12天】本文以Python为例,展示了数据分析的完整流程:从CSV文件加载数据,执行预处理(处理缺失值和异常值),进行数据探索(可视化和统计分析),选择并训练线性回归模型,评估模型性能,以及结果解释与可视化。每个步骤都包含相关代码示例,强调了数据科学项目中理论与实践的结合。
1263 2
|
机器学习/深度学习
智能体DS-Agent基于案例推理,让GPT-4数据科学任务接近100%
【4月更文挑战第20天】DS-Agent是结合案例推理(CBR)和大型语言模型的新研究,旨在提升自动化数据科学任务效率。通过自动迭代管道,它能理解任务、构建模型并优化性能。在开发阶段,成功率高达100%,部署阶段平均提高36%的一次通过率,降低成本,使开源LLMs也能高效处理数据科学任务。然而,LLMs的生成问题和资源限制仍是挑战。论文链接:https://arxiv.org/pdf/2402.17453.pdf
382 4
|
11月前
|
存储 C语言
数据在内存中的存储方式
本文介绍了计算机中整数和浮点数的存储方式,包括整数的原码、反码、补码,以及浮点数的IEEE754标准存储格式。同时,探讨了大小端字节序的概念及其判断方法,通过实例代码展示了这些概念的实际应用。
789 1
|
8月前
|
人工智能 自然语言处理 程序员
通义灵码2.0全新升级,AI程序员全面开放使用
通义灵码2.0来了,成为全球首个同时上线JetBrains和VSCode的AI 程序员产品!立即下载更新最新插件使用。
3585 85
通义灵码2.0全新升级,AI程序员全面开放使用
|
7月前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
593 32
|
SQL 存储 分布式计算
【Hive】Hive优化有哪些?
【4月更文挑战第16天】【Hive】Hive优化有哪些?
|
数据可视化 JavaScript 前端开发
【数据分析与可视化】pyecharts可视化图表讲解及实战(超详细 附源码)
【数据分析与可视化】pyecharts可视化图表讲解及实战(超详细 附源码)
992 0
|
消息中间件 负载均衡 Java
【Kafka】Kafka 中消费者与消费者组的关系与负载均衡实现
【4月更文挑战第11天】【Kafka】Kafka 中消费者与消费者组的关系与负载均衡实现
|
数据采集 消息中间件 存储
Flume 快速入门【概述、安装、拦截器】
Apache Flume 是一个开源的数据采集工具,用于从各种数据源(如日志、网络数据、消息队列)收集大规模数据,并将其传输和加载到数据存储系统(如 HDFS、HBase、Hive)。Flume 由数据源(Source)、通道(Channel)、拦截器(Interceptor)和接收器(Sink)组成,支持灵活配置以适应不同的数据流处理需求。安装 Flume 包括解压软件包、配置环境变量和调整日志及内存设置。配置文件定义数据源、通道、拦截器和接收器,拦截器允许预处理数据。Flume 适用于构建数据管道,整合分散数据到中心存储系统,便于分析和报告。
2229 3