尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Python数据可视化科技图表绘制系列教程(六)
目录散点图1散点图2添加线性回归线的散点图自定义点形状的散点图不同样式的散点图抖动散点图边际图边缘为直方图的边际图边缘为箱线图的边际图曼哈顿图【声明】未经版权人书面许可任何单位或个人不得以任何形式复制、发行、出租、改编、汇编、传播、展示或利用本博客的全部或部分内容也不得在未经版权人授权的情况下将本博客用于任何商业目的。但版权人允许个人学习、研究、欣赏等非商业性用途的复制和传播。非常推荐大家学习《Python数据可视化科技图表绘制》这本书籍。散点图1import seaborn as sns # 导入seaborn库并简写为sns import matplotlib.pyplot as plt df sns.load_dataset(iris,data_homeseaborn,cacheTrue) # 加载 iris 数据集 # 绘制散点图 sns.regplot(xdf[sepal_length], ydf[sepal_width]) # 绘制散点图默认进行线性拟合如图所示 sns.regplot(xdf[sepal_length], ydf[sepal_width], fit_regFalse) # 保存图片 plt.savefig(P142散点图1.png, dpi600, bbox_inchestight, transparentTrue) plt.show()散点图1散点图2import pandas as pd import numpy as np import matplotlib.pyplot as plt midwest pd.read_csv(rE:\PythonProjects\experiments_figures\绘图案例数据\midwest_filter.csv) # 导入数据集 categories np.unique(midwest[category]) # 获取数据集中的唯一类别 # 生成与唯一类别数量相同的颜色 # 使用 matplotlib 的颜色映射函数来生成颜色 colors [plt.cm.tab10(i / float(len(categories) - 1)) for i in range(len(categories))] # 绘制每个类别的图形 # 设置图形的大小、分辨率和背景色 plt.figure(figsize(10, 6), dpi600, facecolorw, edgecolork) # 遍历每个类别并使用 scatter 函数绘制散点图 for i, category in enumerate(categories): # 使用 loc 方法筛选出特定类别的数据并绘制散点图 plt.scatter(area, poptotal, datamidwest.loc[midwest.category category, :], s20, colorcolors[i], labelstr(category)) # 使用 color 参数 # 图形修饰 plt.gca().set(xlim(0.0, 0.1), ylim(0, 90000), xlabelArea, ylabelPopulation) # 设置 x 轴和 y 轴的范围、标签 # 设置 x 轴和 y 轴的刻度字体大小 plt.xticks(fontsize12) plt.yticks(fontsize12) plt.title(Scatterplot , fontsize22) # 设置图形标题 plt.legend(fontsize12) # 添加图例 # 保存图片 plt.savefig(P143散点图2.png, dpi600, bbox_inchestight, transparentTrue) plt.show()散点图2添加线性回归线的散点图import pandas as pd # 导入pandas库并简写为pd import matplotlib.pyplot as plt # 导入matplotlib.pyplot模块并简写为plt import seaborn as sns # 导入seaborn库并简写为sns df sns.load_dataset(iris) # 加载iris数据集 # 绘制散点图并添加红色线性回归线 fig, ax plt.subplots(figsize(8, 6)) # 创建图形和子图对象并设置图形大小 sns.regplot(xdf[sepal_length], ydf[sepal_width], # 绘制散点图指定横纵轴数据 line_kws{color: r}, axax) # 设置线性回归线颜色为红色 # 保存图片 plt.savefig(P144添加线性回归线的散点图_添加红色线性回归线.png, dpi600, bbox_inchestight, transparentTrue) plt.show() # 绘制散点图并添加半透明的红色线性回归线 fig, ax plt.subplots(figsize(8, 6)) # 创建图形和子图对象并设置图形大小 sns.regplot(xdf[sepal_length], ydf[sepal_width], # 绘制散点图指定横纵轴数据 line_kws{color: r, alpha: 0.4}, axax) # 设置线性回归线颜色为红色透明度为0.4 # 保存图片 plt.savefig(P144添加线性回归线的散点图_添加半透明的红色线性回归线.png, dpi600, bbox_inchestight, transparentTrue) plt.show() # 绘制散点图并自定义线性回归线的线宽、线型和颜色 fig, ax plt.subplots(figsize(8, 6)) # 创建图形和子图对象并设置图形大小 sns.regplot(xdf[sepal_length], ydf[sepal_width], # 绘制散点图指定横纵轴数据 line_kws{color: r, alpha: 0.4, lw: 5, ls: --}, axax) # 设置线性回归线的颜色、透明度、线宽和线型 # 保存图片 plt.savefig(P144添加线性回归线的散点图_自定义线性回归线的线宽、线型和颜色.png, dpi600, bbox_inchestight, transparentTrue) plt.show()添加线性回归线的散点图_添加红色线性回归线添加线性回归线的散点图_添加半透明的红色线性回归线添加线性回归线的散点图_自定义线性回归线的线宽、线型和颜色自定义点形状的散点图import pandas as pd # 导入pandas库并简写为pd import matplotlib.pyplot as plt # 导入matplotlib.pyplot模块并简写为plt import seaborn as sns # 导入seaborn库并简写为sns df sns.load_dataset(iris) # 加载iris数据集 fig, ax plt.subplots(figsize(8, 6)) # 创建图形和子图对象并设置图形大小 # 绘制散点图不添加回归线标记形状为 sns.regplot(xdf[sepal_length], ydf[sepal_width], marker, fit_regFalse, axax) # 保存图片 plt.savefig(P146使用标记形状“”.png, dpi600, bbox_inchestight, transparentTrue) plt.show() fig, ax plt.subplots(figsize(8, 6)) # 创建图形和子图对象并设置图形大小 # 绘制散点图不添加回归线设置散点标记颜色为暗红色透明度为0.3标记大小为200 sns.regplot(xdf[sepal_length], ydf[sepal_width], fit_regFalse, scatter_kws{color: darkred, alpha: 0.3, s: 200}, axax) # 保存图片 plt.savefig(P146定义颜色、透明度和大小.png, dpi600, bbox_inchestight, transparentTrue) plt.show()使用标记形状“”定义颜色、透明度和大小不同样式的散点图import seaborn as sns # 导入seaborn库 import matplotlib.pyplot as plt # 导入matplotlib.pyplot库 df sns.load_dataset(iris) # 加载iris数据集 # 使用hue参数提供一个因子变量并绘制散点图 sns.lmplot(xsepal_length, ysepal_width, datadf, fit_regFalse, huespecies, legendFalse) # 将图例移动到图形中的一个空白部分 plt.legend(loclower right) # 保存图片 plt.savefig(P147散点图_着色不同的数据子集.png, dpi600, bbox_inchestight, transparentTrue) plt.show() # 绘制散点图并指定每个数据子集的标记形状 sns.lmplot(xsepal_length, ysepal_width, datadf, fit_regFalse, huespecies, legendFalse, markers[o, x, 1]) # 将图例移动到图形中的一个空白部分 plt.legend(loclower right) # 保存图片 plt.savefig(P147散点图_指定标记形状.png, dpi600, bbox_inchestight, transparentTrue) plt.show() # 使用调色板来着色不同的数据子集 sns.lmplot(xsepal_length, ysepal_width, datadf, fit_regFalse, huespecies, legendFalse, paletteSet2) # 将图例移动到图形中的一个空白部分 plt.legend(loclower right) # 保存图片 plt.savefig(P147散点图_使用了调色板.png, dpi600, bbox_inchestight, transparentTrue) plt.show() # 控制每个数据子集的颜色 sns.lmplot(xsepal_length, ysepal_width, datadf, fit_regFalse, huespecies, legendFalse, palettedict(setosablue, virginicared, versicolorgreen)) # 将图例移动到图形中的一个空白部分 plt.legend(loclower right) # 保存图片 plt.savefig(P147散点图_自定义的调色板.png, dpi600, bbox_inchestight, transparentTrue) plt.show()散点图_着色不同的数据子集散点图_指定标记形状散点图_使用了调色板散点图_自定义的调色板抖动散点图import pandas as pd import seaborn as sns import matplotlib.pyplot as plt df pd.read_csv(rE:\PythonProjects\experiments_figures\绘图案例数据\mpg_ggplot2.csv) # 导入数据 # 绘制Stripplot fig, ax plt.subplots(figsize(12, 6), dpi80) sns.stripplot(xcty, yhwy, hueclass, datadf, jitter0.25, size6, axax, linewidth.5) # 修饰 plt.title(Use jittered plots to avoid overlapping of points, fontsize22) # 保存图片 plt.savefig(P149抖动散点图.png, dpi600, bbox_inchestight, transparentTrue) plt.show()抖动散点图边际图import seaborn as sns # 导入Seaborn库并简写为sns import matplotlib.pyplot as plt # 导入Matplotlib.pyplot库并简写为plt df sns.load_dataset(iris) # 从Seaborn中加载iris数据集 # 创建带有散点图的边际图 sns.jointplot(xdf[sepal_length], ydf[sepal_width], kindscatter) plt.savefig(P150边际图1.png, dpi600, bbox_inchestight, transparentTrue) plt.close() # 关闭当前图避免影响后续绘图 # 创建带有六边形图的边际图 sns.jointplot(xdf[sepal_length], ydf[sepal_width], kindhex) plt.savefig(P150边际图2.png, dpi600, bbox_inchestight, transparentTrue) plt.close() # 关闭当前图避免影响后续绘图 # 创建带有核密度估计图的边际图 sns.jointplot(xdf[sepal_length], ydf[sepal_width], kindkde) plt.savefig(P150边际图3.png, dpi600, bbox_inchestight, transparentTrue) plt.close() # 关闭当前图避免影响后续绘图 # 自定义联合图中的散点图 sns.jointplot(xdf[sepal_length], ydf[sepal_width], kindscatter, s200, colorm, edgecolorskyblue, linewidth2) plt.savefig(P150边际图4.png, dpi600, bbox_inchestight, transparentTrue) plt.close() # 关闭当前图避免影响后续绘图 # 自定义颜色 sns.set_theme(stylewhite, color_codesTrue) sns.jointplot(xdf[sepal_length], ydf[sepal_width], kindkde, colorskyblue) plt.savefig(P150边际图5.png, dpi600, bbox_inchestight, transparentTrue) plt.close() # 关闭当前图避免影响后续绘图 # 自定义直方图 sns.jointplot(xdf[sepal_length], ydf[sepal_width], kindhex, marginal_kwsdict(bins30, fillTrue)) plt.savefig(P150边际图6.png, dpi600, bbox_inchestight, transparentTrue) plt.close() # 关闭当前图避免影响后续绘图 # 无间隔 sns.jointplot(xdf[sepal_length], ydf[sepal_width], kindkde, colorblue, space0) plt.savefig(P150边际图7.png, dpi600, bbox_inchestight, transparentTrue) plt.close() # 关闭当前图避免影响后续绘图 # 大间隔 sns.jointplot(xdf[sepal_length], ydf[sepal_width], kindkde, colorblue, space3) plt.savefig(P150边际图8.png, dpi600, bbox_inchestight, transparentTrue) plt.close() # 关闭当前图避免影响后续绘图 # 调整边际图比例 sns.jointplot(xdf[sepal_length], ydf[sepal_width], kindkde, ratio2) plt.savefig(P150边际图9.png, dpi600, bbox_inchestight, transparentTrue) plt.close() # 关闭当前图避免影响后续绘图边际图1边际图2边际图3边际图4边际图5边际图6边际图7边际图8边际图9边缘为直方图的边际图import pandas as pd import matplotlib.pyplot as plt df pd.read_csv(rE:\PythonProjects\experiments_figures\绘图案例数据\mpg_ggplot2.csv) # 导入数据 # 创建图形和网格布局 fig plt.figure(figsize(12, 8), dpi80) grid plt.GridSpec(4, 4, hspace0.5, wspace0.2) # 定义坐标轴 ax_main fig.add_subplot(grid[:-1, :-1]) ax_right fig.add_subplot(grid[:-1, -1], xticklabels[], yticklabels[]) ax_bottom fig.add_subplot(grid[-1, 0:-1], xticklabels[], yticklabels[]) # 主图上的散点图 ax_main.scatter(displ, hwy, sdf.cty * 4, cdf.manufacturer.astype(category).cat.codes, alpha.9, datadf, cmaptab10, edgecolorsgray, linewidths.5) # 右侧的直方图 ax_bottom.hist(df.displ, 40, histtypestepfilled, orientationvertical, colorblue, alpha0.8) ax_bottom.invert_yaxis() # 底部的直方图 ax_right.hist(df.hwy, 40, histtypestepfilled, orientationhorizontal, colorblue, alpha0.8) # 图形修饰 ax_main.set(titleScatterplot with Histograms \n displ vs hwy, xlabeldispl, ylabelhwy) ax_main.title.set_fontsize(20) for item in ([ax_main.xaxis.label, ax_main.yaxis.label] ax_main.get_xticklabels() ax_main.get_yticklabels()): item.set_fontsize(14) # 获取当前的刻度位置并设置 xlabels ax_main.get_xticks().tolist() ax_main.set_xticks(xlabels) ax_main.set_xticklabels(xlabels) # 保存图片 plt.savefig(P152边缘为直方图的边际图.png, dpi600, bbox_inchestight, transparentTrue) plt.show()边缘为直方图的边际图边缘为箱线图的边际图import pandas as pd import seaborn as sns import matplotlib.pyplot as plt df pd.read_csv(rE:\PythonProjects\experiments_figures\绘图案例数据\mpg_ggplot2.csv) # 导入数据 # 创建图形和网格布局 fig plt.figure(figsize(12, 8), dpi80) grid plt.GridSpec(4, 4, hspace0.5, wspace0.2) # 定义坐标轴 ax_main fig.add_subplot(grid[:-1, :-1]) # 主图的位置 ax_right fig.add_subplot(grid[:-1, -1], xticklabels[], yticklabels[]) # 右侧箱线图的位置 ax_bottom fig.add_subplot(grid[-1, 0:-1], xticklabels[], yticklabels[]) # 底部箱线图的位置 # 主图上的散点图 ax_main.scatter(displ, hwy, sdf.cty * 5, cdf.manufacturer.astype(category).cat.codes, # 根据制造商进行着色 alpha.8, datadf, cmapSet1, edgecolorsblack, linewidths.5) sns.boxplot(df.hwy, axax_right, orientv) # 在右侧添加箱线图 sns.boxplot(df.displ, axax_bottom, orienth) # 在底部添加箱线图 # 图形修饰 ax_bottom.set(xlabel) # 移除箱线图的x轴名称 ax_right.set(ylabel) # 移除箱线图的y轴名称 # 主标题、X轴和Y轴标签 ax_main.set(titleScatterplot with Histograms \n displ vs hwy, xlabeldispl, ylabelhwy) # 设置字体大小 ax_main.title.set_fontsize(20) # 设置主标题的字体大小 for item in ([ax_main.xaxis.label, ax_main.yaxis.label] ax_main.get_xticklabels() ax_main.get_yticklabels()): item.set_fontsize(14) # 设置其他组件的字体大小 # 保存图片 plt.savefig(P154边缘为箱线图的边际图.png, dpi600, bbox_inchestight, transparentTrue) plt.show()边缘为箱线图的边际图曼哈顿图from pandas import DataFrame # 导入DataFrame模块 from scipy.stats import uniform # 从scipy.stats模块导入uniform分布 from scipy.stats import randint # 从scipy.stats模块导入randint分布 import numpy as np # 导入numpy库并简称为np import matplotlib.pyplot as plt # 导入matplotlib.pyplot模块并简称为plt # 生成样本数据 df DataFrame({gene: [gene-%i % i for i in np.arange(10000)], # 创建基因名字的序列 pvalue: uniform.rvs(size10000), # 生成服从均匀分布的p值数据 chromosome: [ch-%i % i for i in randint.rvs(0, 12, size10000)]}) # 生成随机的染色体编号 # 计算-log10(pvalue) df[minuslog10pvalue] -np.log10(df.pvalue) # 计算-p值的负对数用于曼哈顿图的纵轴 df.chromosome df.chromosome.astype(category) # 将染色体列转换为分类类型 df.chromosome df.chromosome.cat.set_categories( [ch-%i % i for i in range(12)], orderedTrue) # 对染色体进行排序 df df.sort_values(chromosome) # 根据染色体排序 # 准备绘制曼哈顿图 df[ind] range(len(df)) # 为数据集添加索引列 df_grouped df.groupby((chromosome), observedFalse) # 按染色体分组 # 绘制曼哈顿图 fig plt.figure(figsize(14, 8)) # 设置图形大小 ax fig.add_subplot(111) # 添加子图 colors [darkred, darkgreen, darkblue, gold] # 定义颜色列表 x_labels [] # 初始化x轴标签列表 x_labels_pos [] # 初始化x轴标签位置列表 for num, (name, group) in enumerate(df_grouped): # 遍历分组后的数据 group.plot(kindscatter, xind, yminuslog10pvalue, colorcolors[num % len(colors)], axax) # 绘制散点图并按染色体着色 x_labels.append(name) # 添加染色体名到标签列表 x_labels_pos.append((group[ind].iloc[-1] - (group[ind].iloc[-1] - group[ind].iloc[0]) / 2)) # 添加染色体标签的位置 ax.set_xticks(x_labels_pos) # 设置x轴刻度位置 ax.set_xticklabels(x_labels) # 设置x轴刻度标签 ax.set_xlim([0, len(df)]) # 设置x轴范围 ax.set_ylim([0, 3.5]) # 设置y轴范围 ax.set_xlabel(Chromosome) # 设置x轴标签 # 保存图片 plt.savefig(P159曼哈顿图.png, dpi600, bbox_inchestight, transparentTrue) plt.show()曼哈顿图
RELATED

相关推荐

WAF测试实战手记:被绕过的那个深夜,我总结出这份避坑清单

WAF测试实战手记:被绕过的那个深夜,我总结出这份避坑清单

WAF测试实战手记:被绕过的那个深夜,我总结出这份避坑清单 【免费下载链接】Awesome-WAF Everything about Web Application Firewalls (WAFs) from Security Standpoint! 🔥 项目地址: https://gitcode.com/gh_mirrors/aw/Awesome-WAF …

📅 2026/10/9 0:10:42
从踩坑到一键揪出C/C++漏洞:semgrep-rules漏洞研究实战指南

从踩坑到一键揪出C/C++漏洞:semgrep-rules漏洞研究实战指南

从踩坑到一键揪出C/C漏洞:semgrep-rules漏洞研究实战指南 【免费下载链接】semgrep-rules A collection of my Semgrep rules to facilitate vulnerability research. 项目地址: https://gitcode.com/gh_mirrors/semgr/semgrep-rules 凌晨两点,你…

📅 2026/10/9 14:53:49
让喜欢的角色住进桌面:DyberPet 桌宠框架三分钟上手

让喜欢的角色住进桌面:DyberPet 桌宠框架三分钟上手

让喜欢的角色住进桌面:DyberPet 桌宠框架三分钟上手 【免费下载链接】DyberPet Desktop Cyber Pet Framework based on PySide6 项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet 凌晨一点的屏幕右下角,一只小猫从站姿慢慢趴下去&…

📅 2026/9/8 16:49:48
MORE NEWS

更多资讯

📰

Livenerf: Has Opus 5.5 been nerfed yet?

从今天觉醒,技术赋予每一个人数字生命Livenerf: Has Opus 5.5 been nerfed yet?① 技术背景:为什么“模型是否被削弱”成了工程问题 大模型应用进入深水区后,一个微妙但普遍的焦虑出现了:同一个模型,上周还能稳定完成的任务&…

📰

2027年新疆职业院校技能大赛(高职组)移动应用设计与开发赛项样题

2027年新疆职业院校技能大赛(高职组)移动应用设计与开发赛项样题 文章目录2027年新疆职业院校技能大赛(高职组)移动应用设计与开发赛项样题任务一 产品原型设计任务 1:绘制“生态环保首页”模块界面原型(6分…

📰

后台管理静态模板:HTML+CSS+原生JS搭建与避坑指南

简介:这是一套面向企业后台与网站管理系统开发者的中文版HTML后台管理静态模板,适合前端初学者、全栈开发者及需要快速搭建管理界面的项目团队使用。模板预置了登录、首页、品牌管理、产品列表、订单表单、权限控制、用户列表、广告管理、管理员设置等常…

📰

继电器与接触器:从原理到选型,避开电气控制中的那些坑

1. 从两个让人头疼的现场故障说起刚入行那会儿,我在一个自动化产线上做调试。有天半夜接到电话,说一台包装机“抽风”了——按下启动按钮,电机嗡嗡响两声就停,反复几次之后,控制柜里冒出一股淡淡的焦糊味。赶到现场打开…

📰

SAVD空间自适应校正:VR视觉误差的硬核工程解法

1. 项目概述:为什么VR图像误差校正不是“调个参数”就能解决的事我第一次在某高校实验室调试VR头显时,被一个现象卡了整整三天——用户左右平移头部时,虚拟物体边缘出现肉眼可见的“撕裂感”,不是延迟高,也不是帧率低&…

📰

校园线上超市小程序源码拆解:从业务模型到二次开发实践

记得第一次拿到这类“可白嫖源码”的校园线上超市平台项目,我的操作和大多数人一样:解压、打开微信开发者工具、导入、然后坐等报错。等我把页面加载出来、点了几下能正常跳转之后,才意识到自己对这套系统的理解还停留在“能跑”的阶段。项目…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬