我的编程空间,编程开发者的网络收藏夹
学习永远不晚

国一大佬也收藏的16个Python数据可视化案例(附源码)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

国一大佬也收藏的16个Python数据可视化案例(附源码)

数据可视化是数学建模比赛中关键的一步。

同学们在以数据可视化表现某些数据时可以尝试使用 Python 的第三方库。

不过有些同学可能会问也会遇到不少问题,比如选择何种图表,以及如何制作,代码如何编写,这些都是问题!

今天给大家介绍几种常见的 Python 数据可视化图表(第一期),总计约 16 个示例~

01. 小提琴图

小提琴图可以将一组或多组数据的数值变量分布可视化。

import seaborn as snsimport matplotlib.pyplot as plt# 加载数据df = sns.load_dataset('iris', data_home='seaborn-data', cache=False)# 绘图显示sns.violinplot(x=df["species"], y=df["sepal_length"])plt.show()

02. 核密度估计图

核密度估计图是对直方图的一个拓展。

可以可视化一个或多个组的数值变量的分布,适合大型数据集。

import seaborn as snsimport matplotlib.pyplot as plt# 加载数据df = sns.load_dataset('iris', data_home='seaborn-data', cache=False)# 绘图显示sns.kdeplot(df['sepal_width'])plt.show()

结果如下

03. 散点图

散点图,显示两个数值变量之间的关系。

import seaborn as snsimport matplotlib.pyplot as plt# 加载数据df = sns.load_dataset('iris', data_home='seaborn-data', cache=False)# 绘图显示sns.regplot(x=df["sepal_length"], y=df["sepal_width"])plt.show()

结果如下

04. 矩形热力图

矩形热力图,矩阵中的每个值都被表示为一个颜色数据。

import seaborn as snsimport pandas as pdimport numpy as np# 加载数据df=pd.DataFrame(np.random.random((5,5)),columns=["a","b","c","d","e"])# Default heatmapp1 = sns.heatmap(df)

结果如下

05. 相关性图

分析每对数据变量之间的关系

相关性可视化为散点图,对角线用直方图或密度图表示每个变量的分布。

import seaborn as snsimport matplotlib.pyplot as plt# 加载数据df = sns.load_dataset('iris', data_home='seaborn-data', cache=True)# 绘图显示sns.pairplot(df)plt.show()

结果如下

06. 气泡图

气泡图本质是一个散点图,其中圆圈大小被映射到第三数值变量的值。

import matplotlib.pyplot as pltimport seaborn as snsfrom gapminder import gapminder# 导入数据data = gapminder.loc[gapminder.year == 2007]# 使用 scatterplot 创建气泡图sns.scatterplot(data=data, x="gdpPercap", y="lifeExp", size="pop", legend=False, sizes=(20, 2000))# 显示plt.show()

结果如下

07. 连接散点图

连接散点图就是一个线图,其中每个数据点由圆形或任何类型的标记展示。

import matplotlib.pyplot as pltimport numpy as npimport pandas as pd# 创建数据df = pd.DataFrame({'x_axis': range(1, 10), 'y_axis': np.random.randn(9) * 80 + range(1, 10)})# 绘制显示plt.plot('x_axis', 'y_axis', data=df, linestyle='-', marker='o')plt.show()

08. 雷达图

雷达图,可以可视化多个定量变量的一个或多个系列的值。

每个变量都有自己的轴,所有轴都连接在图形的中心。

import matplotlib.pyplot as pltimport pandas as pdfrom math import pi# 设置数据df = pd.DataFrame({    'group': ['yun', 'ding', 'shu', 'mo'],    'var1': [38, 1.5, 30, 4],    'var2': [29, 10, 9, 34],    'var3': [8, 39, 23, 24],    'var4': [7, 31, 33, 14],    'var5': [28, 15, 32, 14]})# 目标数量categories = list(df)[1:]N = len(categories)# 角度angles = [n / float(N) * 2 * pi for n in range(N)]angles += angles[:1]# 初始化ax = plt.subplot(111, polar=True)# 设置第一个ax.set_theta_offset(pi / 2)ax.set_theta_direction(-1)# 添加背景信息plt.xticks(angles[:-1], categories)ax.set_rlabel_position(0)plt.yticks([10, 20, 30], ["10", "20", "30"], color="grey", size=7)plt.ylim(0, 40)# 添加数据图# 第一个values = df.loc[0].drop('group').values.flatten().tolist()values += values[:1]ax.plot(angles, values, linewidth=1, linestyle='solid', label="yun")ax.fill(angles, values, 'b', alpha=0.1)# 第二个values = df.loc[1].drop('group').values.flatten().tolist()values += values[:1]ax.plot(angles, values, linewidth=1, linestyle='solid', label="ding")ax.fill(angles, values, 'r', alpha=0.1)# 第三个values = df.loc[2].drop('group').values.flatten().tolist()values += values[:1]ax.plot(angles, values, linewidth=1, linestyle='solid', label="shu")ax.fill(angles, values, 'r', alpha=0.1)# 第四个values = df.loc[3].drop('group').values.flatten().tolist()values += values[:1]ax.plot(angles, values, linewidth=1, linestyle='solid', label="mo")ax.fill(angles, values, 'r', alpha=0.1)# 添加图例plt.legend(loc='upper right', bbox_to_anchor=(0.1, 0.1))# 显示plt.show()

09. 棒棒糖图

棒棒糖图是柱状图的一种变形,显示一个线段和一个圆。

import matplotlib.pyplot as pltimport pandas as pdimport numpy as np# 创建数据df = pd.DataFrame({'group': list(map(chr, range(65, 85))), 'values': np.random.uniform(size=20) })# 排序取值ordered_df = df.sort_values(by='values')my_range = range(1, len(df.index)+1)# 创建图表plt.stem(ordered_df['values'])plt.xticks(my_range, ordered_df['group'])# 显示plt.show()

10. 径向柱图

径向柱图同样也是条形图的变形,但是使用极坐标而不是直角坐标系。

import pandas as pdimport matplotlib.pyplot as pltimport numpy as np# 生成数据df = pd.DataFrame(        {            'Name': ['item ' + str(i) for i in list(range(1, 51)) ],            'Value': np.random.randint(low=10, high=100, size=50)        })# 排序df = df.sort_values(by=['Value'])# 初始化画布plt.figure(figsize=(20, 10))ax = plt.subplot(111, polar=True)plt.axis('off')# 设置图表参数upperLimit = 100lowerLimit = 30labelPadding = 4# 计算最大值max = df['Value'].max()# 数据下限 10, 上限 100slope = (max - lowerLimit) / maxheights = slope * df.Value + lowerLimit# 计算条形图的宽度width = 2*np.pi / len(df.index)# 计算角度indexes = list(range(1, len(df.index)+1))angles = [element * width for element in indexes]# 绘制条形图bars = ax.bar(    x=angles,    height=heights,    width=width,    bottom=lowerLimit,    linewidth=2,    edgecolor="white",    color="#61a4b2",)# 添加标签for bar, angle, height, label in zip(bars,angles, heights, df["Name"]):    # 旋转    rotation = np.rad2deg(angle)    # 翻转    alignment = ""    if angle >= np.pi/2 and angle < 3*np.pi/2:        alignment = "right"        rotation = rotation + 180    else:        alignment = "left"    # 最后添加标签    ax.text(        x=angle,        y=lowerLimit + bar.get_height() + labelPadding,        s=label,        ha=alignment,        va='center',        rotation=rotation,        rotation_mode="anchor")plt.show()

11. 维恩图

维恩图,显示不同组之间所有可能的关系。

import matplotlib.pyplot as pltfrom matplotlib_venn import venn2# 创建图表venn2(subsets=(10, 5, 2), set_labels=('Group A', 'Group B'))# 显示plt.show()

12. 饼图

饼图将圆划分成一个个扇形区域,每个区域代表在整体中所占的比例。

import matplotlib.pyplot as plt# 创建数据size_of_groups = [12, 11, 3, 30]# 生成饼图plt.pie(size_of_groups)plt.show()

13. 折线图

折线图是最常见的图表类型之一。

将各个数据点标志连接起来的图表,用于展现数据的变化趋势。

import matplotlib.pyplot as pltimport numpy as np# 创建数据values = np.cumsum(np.random.randn(1000, 1))# 绘制图表plt.plot(values)plt.show()

14. 堆叠面积图

堆叠面积图表示若干个数值变量的数值演变。

每个显示在彼此的顶部,易于读取总数,但较难准确读取每个的值。

import matplotlib.pyplot as plt# 创建数据x = range(1, 6)y1 = [1, 4, 6, 8, 9]y2 = [2, 2, 7, 10, 12]y3 = [2, 8, 5, 10, 6]# 生成图表plt.stackplot(x, y1, y2, y3, labels=['A', 'B', 'C'])plt.legend(loc='upper left')plt.show()

15. 河流图

河流图是一种特殊的流图, 它主要用来表示事件或主题等在一段时间内的变化。

围绕着中心轴显示,且边缘是圆形的,从而形成流动的形状。

import matplotlib.pyplot as pltimport numpy as npfrom scipy import stats# 添加数据x = np.arange(1990, 2020)y = [np.random.randint(0, 5, size=30) for _ in range(5)]def gaussian_smooth(x, y, grid, sd):    """平滑曲线"""    weights = np.transpose([stats.norm.pdf(grid, m, sd) for m in x])    weights = weights / weights.sum(0)    return (weights * y).sum(1)# 自定义颜色COLORS = ["#D0D1E6", "#A6BDDB", "#74A9CF", "#2B8CBE", "#045A8D"]# 创建画布fig, ax = plt.subplots(figsize=(10, 7))# 生成图表grid = np.linspace(1985, 2025, num=500)y_smoothed = [gaussian_smooth(x, y_, grid, 1) for y_ in y]ax.stackplot(grid, y_smoothed, colors=COLORS, baseline="sym")# 显示plt.show()

16.地图

适用于地理空间数据分析

import pandas as pdimport folium# 创建地图对象m = folium.Map(location=[20, 0], tiles="OpenStreetMap", zoom_start=2)# 创建图标数据data = pd.DataFrame({   'lon': [-58, 2, 145, 30.32, -4.03, -73.57, 36.82, -38.5],   'lat': [-34, 49, -38, 59.93, 5.33, 45.52, -1.29, -12.97],   'name': ['Buenos Aires', 'Paris', 'melbourne', 'St Petersbourg', 'Abidjan', 'Montreal', 'Nairobi', 'Salvador'],   'value': [10, 12, 40, 70, 23, 43, 100, 43]}, dtype=str)# 添加信息for i in range(0,len(data)):    folium.Marker(      location=[data.iloc[i]['lat'], data.iloc[i]['lon']],      popup=data.iloc[i]['name'],    ).add_to(m)# 保存m.save('map.html')

来源地址:https://blog.csdn.net/ydky_xiaoyun/article/details/127876332

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

国一大佬也收藏的16个Python数据可视化案例(附源码)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录