【python可视化】折线图精粹:重点突出的艺术与技巧

简介: 【python可视化】折线图精粹:重点突出的艺术与技巧

作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。

会一些的技术:数据分析、算法、SQL、大数据相关、python

欢迎加入社区:码上找工作

作者专栏每日更新:

LeetCode解锁1000题: 打怪升级之旅

python数据分析可视化:企业实战案例

备注说明:方便大家阅读,统一使用python,带必要注释,公众号 数据分析螺丝钉

常见方法

0. 颜色区分

plt.plot(x,y, color='blue')

1. 线条粗细

将重点线条的粗细设置得比其他线条更粗,可以有效地使其脱颖而出。

plt.plot(x, y, linewidth=3)  # 将重点线条的宽度设置为3

2. 线条样式

改变线条的样式(例如,使用虚线或点划线)也可以帮助区分重点线条。

plt.plot(x, y, linestyle='--')  # 将重点线条设置为虚线

3. 添加标签和注释

在图表中直接为重点线条添加注释或者在图例中突出显示可以帮助观众快速识别重点信息。

plt.text(x_position, y_position, '重点', fontsize=12)  # 在图表中添加文本注释

4. 线条标记

在重点线条上使用标记(如圆圈、方块、星号等)来进一步区分。

plt.plot(x, y, marker='o')  # 使用圆圈标记重点线条的每个数据点

5. 高亮背景区域

通过高亮显示与重点线条相关的背景区域,可以吸引观众的注意力。

plt.fill_between(x, y1, y2, color='lightgrey', alpha=0.5)  # 高亮背景区域

6. 使用阴影或光晕

给线条增加阴影或者光晕效果,使其在视觉上更加突出。

数据准备

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 设置随机数种子确保可复现性
np.random.seed(42)
base_sales = np.linspace(100, 130, 12)  # 创建一个基础的平缓销售趋势
sales_data = pd.DataFrame({
    'Product A': np.random.randint(80, 200, size=12),  # 保持产品A的波动
    'Product B': np.random.randint(80, 200, size=12), # 
    'Product C': base_sales + np.random.normal(0, 5, 12), #添加较小的随机波动
    'Product D': base_sales + np.random.normal(0, 5, 12)
}, index=months)

普通图

例如:这是一个常见的产品销售月趋势折线图,分别有四种不同的颜色

# 绘制趋势图
plt.figure(figsize=(10, 6))
colors = ['gray', 'bule', 'red', 'black']  # 使用不同的颜色
for product, color in zip(sales_data.columns, colors):
    plt.plot(sales_data.index, sales_data[product], color=color, marker='o', linestyle='--', label=product)

产品A是战略产品负责人需要让你重点分析,你可能可以看到产品A在5月和9月有两个高点,但是仔细看多个产品的耦合比较多,很难看出来产品A每个月怎么变化的,甚至产品B反而更突出了,这时候需要改进一下图表的可视化

颜色区分

在图表中突出重点一个基本的逻辑可以用颜色区分

# 先绘制其他产品的销售趋势,使用浅灰色
for product in ['Product B', 'Product C', 'Product D']:
    plt.plot(sales_data.index, sales_data[product], color='lightgray', linestyle='--', label='_nolegend_')
# 突出显示产品A的销售趋势,使用深色
plt.plot(sales_data.index, sales_data['Product A'], color='blue', marker='.', label='Product A')

你要讲产品A,那就弱化其他产品,单独给它标识成一个深的颜色,这样对比就能突出产品A的业务变化趋势,再去讲原因会让人容易看出一些信息,5、9月份销售大幅度增加,但接着如果你又写了一些文字解释 (原因是5月办了一场A活动、9月办了B活动,再分别描述)这时候还是会显得不够直观

这时候我们把原因也标注上去

# 标注业务原因
marketing_events = {'May': 'MarketingA', 'Sep': 'MarketingB'}
for month, event in marketing_events.items():
    x_pos = months.index(month)
    y_pos = sales_data.loc[month, 'Product A']
    plt.text(x_pos, y_pos, event, fontsize=12, verticalalignment='bottom', horizontalalignment='center')

可以让人一目了然,分别为marktingA和MarketingB,通过标注原因在图上其实分析师不需要太多的描述,大家一眼能看到你想表达什么这时候叫突出重点

线条粗细

当线条变粗的时候,其他颜色的线条没这么突出了,不过但是如果颜色很深的话还是建议弱化其他颜色,突出粗的线条,这里把产品B的颜色改成浅蓝色了。

背景高亮

这里要稍微注意一下要在线的附近做背景高亮,否则填满整个图也就看不出重点了

highlight_margin = sales_data['Product A'] * 0.05  # 计算高亮范围的宽度
        plt.fill_between(sales_data.index, 
                        sales_data['Product A'] - highlight_margin, 
                        sales_data['Product A'] + highlight_margin, 
                        color='yellow', alpha=0.3)  # 在这个范围内填充颜色

高亮后黄色的背景也很容易吸引读者看到产品A

总结

一个简单的折线图也需要了解技巧和方法,时间久了就可以比别人更进一步

欢迎关注微信公众号 数据分析螺丝钉


相关文章
|
5天前
|
JSON 数据可视化 数据处理
Python基础第九篇(Python可视化的开发)
Python基础第九篇(Python可视化的开发)
|
7天前
|
数据采集 数据可视化 数据挖掘
数据挖掘实战:使用Python进行数据分析与可视化
在大数据时代,Python因其强大库支持和易学性成为数据挖掘的首选语言。本文通过一个电商销售数据案例,演示如何使用Python进行数据预处理(如处理缺失值)、分析(如销售额时间趋势)和可视化(如商品类别销售条形图),揭示数据背后的模式。安装`pandas`, `numpy`, `matplotlib`, `seaborn`后,可以按照提供的代码步骤,从读取CSV到数据探索,体验Python在数据分析中的威力。这只是数据科学的入门,更多高级技术等待发掘。【6月更文挑战第14天】
44 11
|
3天前
|
机器学习/深度学习 自然语言处理 数据可视化
文本挖掘与可视化:生成个性化词云的Python实践【7个案例】
词云(Word Cloud),又称为文字云或标签云,是一种用于文本数据可视化的技术,通过不同大小、颜色和字体展示文本中单词的出现频率或重要性。在词云中,更频繁出现的单词会显示得更大,反之则更小。
|
3天前
|
机器学习/深度学习 自然语言处理 数据可视化
文本挖掘与可视化:生成个性化词云的Python实践【7个案例】
词云是文本数据可视化的工具,显示单词频率,直观、美观,适用于快速展示文本关键信息。 - 用途包括关键词展示、数据探索、报告演示、情感分析和教育。 - 使用`wordcloud`和`matplotlib`库生成词云,`wordcloud`负责生成,`matplotlib`负责显示。 - 示例代码展示了从简单词云到基于蒙版、颜色和关键词权重的复杂词云生成。 - 案例覆盖了中文分词(使用`jieba`库)、自定义颜色和关键词权重的词云。 - 代码示例包括读取文本、分词、设置词云参数、显示和保存图像。
17 1
|
2天前
|
数据可视化
Seaborn 可视化(三)
Seaborn的pairplot用于多变量数据可视化,但上半部分与下半部分重复。可通过PairGrid手动定制,如示例所示,用regplot和kdeplot分别绘制对角线以上和以下的图,histplot画对角线。hue参数增强可视化,比如在violinplot和lmplot中按性别着色,展示不同类别。还能通过点的大小和形状(如markers参数)添加信息。Seaborn提供darkgrid等5种样式,用sns.set_style切换。
|
2天前
|
数据可视化 Python
Seaborn 可视化(二)
Seaborn教程展示了如何用`jointplot`创建蜂巢图,以及使用`matplotlib`的`hexbin`函数绘制2D核密度图。此外,它还介绍了2D核密度图,强调其在展示两个变量联合分布上的作用。条形图、箱线图和小提琴图也被讨论,其中箱线图揭示了数据的统计特性,而小提琴图结合了箱线图和核密度图的信息。`pairplot`函数用于可视化数据集中所有变量之间的两两关系。每种图表类型都配有示例图像。
|
2天前
|
数据可视化 数据挖掘 API
Seaborn 可视化(一)
Seaborn是Python的一个基于matplotlib的统计图形库,提供交互式界面,便于创建吸引人的统计图表。它与Pandas集成良好,支持直接使用DataFrame数据进行绘图。Seaborn能绘制直方图(distplot)、密度图(核密度估计)、条形图(计数图)以及散点图(regplot、lmplot、jointplot),适用于单变量和双变量数据分析,如展示分布、关系和趋势。例如,`sns.distplot()`用于直方图,`sns.lmplot()`和`sns.jointplot()`则用于绘制散点图并可添加回归线。
|
9天前
|
Python
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)-2
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)
|
9天前
|
数据可视化 开发者 Python
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)-1
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)
|
10天前
|
算法 数据可视化 Python
【KMeans】Python实现KMeans算法及其可视化
【KMeans】Python实现KMeans算法及其可视化