Python绘图技巧,主流绘图库

一、主流绘图库概览

1. 核心工具对比

库名称特点适用场景
Matplotlib基础绘图库,高度可定制科学绘图、论文图表
Seaborn基于Matplotlib,统计图表优化数据分布、关系可视化
Plotly交互式可视化,支持网页输出仪表盘、动态数据展示
Pandas内置简易绘图接口快速数据探索

2. 环境准备

pip install matplotlib seaborn plotly pandas


二、Matplotlib基础与进阶

1. 基础绘图模板

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# 设置中文字体
matplotlib.rcParams['font.family'] = 'SimHei'  # 使用黑体字体,根据实际情况修改
# 生成数据
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)# 创建画布
plt.figure(figsize=(8, 4), dpi=100)# 绘制曲线
plt.plot(x, y, color='#FF6B6B',  # 十六进制颜色linestyle='--', linewidth=2,marker='o',markersize=5,label='sin(x)')# 添加标注
plt.title("正弦函数曲线", fontsize=14, fontfamily='SimHei')  # 解决中文显示
plt.xlabel("X轴", fontsize=12)
plt.ylabel("Y轴", fontsize=12)
plt.legend(loc='upper right')  # 图例位置# 网格与样式
plt.grid(True, linestyle=':', alpha=0.7)
plt.tight_layout()  # 自动调整布局# 显示/保存
plt.savefig('sine_curve.png', bbox_inches='tight')  # 透明背景可加参数transparent=True
plt.show()

 

2. 多子图布局

fig, axes = plt.subplots(2, 2, figsize=(10, 8))  # 2行2列# 第一个子图
axes[0,0].plot(x, np.sin(x), label='正弦')
axes[0,0].set_title('正弦曲线')# 第二个子图
axes[0,1].scatter(x, np.cos(x), c='green', marker='^')
axes[0,1].set_title('余弦散点')# 第三个子图(直方图)
axes[1,0].hist(np.random.randn(1000), bins=30, edgecolor='black', alpha=0.7)# 第四个子图(填充图)
axes[1,1].fill_between(x, np.sin(x), np.cos(x), where=(np.sin(x) > np.cos(x)), color='skyblue', alpha=0.4)plt.tight_layout()

 


三、Seaborn高效统计绘图

1. 分布可视化

import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')# 联合分布图
sns.jointplot(x='total_bill', y='tip', data=tips, kind='hex',  # 可选 'reg'、'kde'marginal_kws={'color': '#4ECDC4'})# 分类箱线图
plt.figure(figsize=(8,5))
sns.boxplot(x='day', y='total_bill', hue='sex', data=tips, palette='Pastel1')
plt.title('每日消费分布')

 

 

2. 热力图与聚类

# 相关性热力图
corr = tips.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', linewidths=0.5, fmt='.2f')# 聚类图
sns.clustermap(corr, cmap='viridis', figsize=(6,6), method='ward')

 

import plotly.express as px# 散点图矩阵
fig = px.scatter_matrix(iris, dimensions=["sepal_length", "sepal_width", "petal_length", "petal_width"],color="species")
fig.show()# 3D曲面图
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))fig = px.surface(x=x, y=y, z=Z, color_continuous_scale='Viridis')
fig.update_layout(title='3D曲面图')
fig.show()

 


四、Plotly交互式可视化

import plotly.graph_objects as go
import numpy as np# 生成3D数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))fig = go.Figure(data=[go.Surface(z=Z,colorscale='Viridis',contours={  # 添加等高线"z": {"show": True, "usecolormap": True}})
])# 添加控件按钮
fig.update_layout(title='3D动态曲面图',scene=dict(xaxis_title='X轴',yaxis_title='Y轴',zaxis_title='Z值',camera=dict(  # 预设视角eye=dict(x=1.5, y=1.5, z=0.1))),updatemenus=[  # 添加视角切换按钮dict(type="buttons",buttons=[dict(label="俯视",method="relayout",args=[{"scene.camera.eye": {"x": 0, "y": 0, "z": 2.5}}]),dict(label="侧视",method="relayout",args=[{"scene.camera.eye": {"x": 2, "y": 2, "z": 0.1}}])],direction="left",pad={"r": 10, "t": 10},showactive=True,x=0.1,xanchor="left",y=1.1,yanchor="top")]
)fig.show()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全之前端学习(HTML篇)

前言:网络安全中有一个漏洞叫xss漏洞,就是利用网页引发弹窗,这就要求我们看得懂源码,所以我会持续更新前端学习,可以不精通,但是一定要会,主要掌握HTML,css,js这三项技术…

Qt 多线程设计:死循环与信号槽的权衡

在开发音视频播放器时,多线程设计是不可避免的挑战。音频和视频的解码、播放需要高效运行,同时还要与主线程或其他线程同步,例如通过信号通知播放进度。本文基于一个实际案例,分析了两种线程设计在死循环和信号槽使用中的表现&…

knowledge-微前端(多个前端应用聚合的一个应用架构体系,每个小的应用可独立运行,独立开发,独立部署上线)

1.前言 微前端,将一个大的前端应用拆分为多个小型的,独立开发的前端应用,每一个小型的应用都可以单独的开发,部署和运行。这种结构允许不同的团队使用不同的技术栈来开发应用的不同部分,提高开发的效率与灵活性。 2.实…

工厂函数详解:概念、目的与作用

一、什么是工厂函数? 工厂函数(Factory Function)是一种设计模式,其核心是通过一个函数来 创建并返回对象,而不是直接使用 new 或构造函数实例化对象。它封装了对象的创建过程,使代码更灵活、可维护。 二、…

旋转位置编码(Rotary Positional Encoding, RoPE):中文公式详解与代码实现

旋转位置编码(Rotary Positional Encoding, RoPE):中文公式详解与代码实现 在序列模型中,位置信息对于任务的理解至关重要。传统的绝对和相对位置编码各有优缺点,而RoPE作为一种创新的位置编码方法,展现了…

C语言-指针变量和变量指针

指针 预备知识 内存地址 字节:字节是内存的容量单位,英文名Byte,1Byte8bits 地址:系统为了便于区分每一个字节面对它们的逐一进行编号(编号是唯一的),称为内存地址,简称地址。int…

unityAB包(1/2)

unityAB包学习 1.AB包的导出扩展BuildAssetBundleOptions无特殊选项压缩相关选项 2.AB包资源管理3.Resource和AssetBundle加载方式的区别4.预设体5.Unity Asset Bundle Browser 工具5为什么要勾选拷贝到StreamingAsset里面。6.AB包的加载 1.AB包的导出 首先在Project窗口&…

算法——广度优先搜索——跨步迷宫

原题链接 思路:找出最短路径,然后判断是否存在连续三个点是横纵坐标相等的,如果有就步数减1 但是有两个样例过不了 错误原因:在错误的测试案例中,最短路径可能有多条,而我刚好选了一条比较曲折的&#x…

某酒企数字化转型及电商规划项目启动会暨培训会v(60页PPT)(文末有下载方式)

详细资料请看本解读文章的最后内容。 在当今数字化浪潮席卷之下,企业的发展面临着前所未有的机遇与挑战。对于某酒企而言,数字化转型和电商规划已成为其实现 “二次腾飞”、迈向世界级酒企的关键战略举措。本次启动会暨培训会,为该酒企的转型…

NET6 WebApi第5讲:中间件(源码理解,俄罗斯套娃怎么来的?);Web 服务器 (Nginx / IIS / Kestrel)、WSL、SSL/TSL

一、NET6的启动流程 区别: .NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】_vscode webapi-CSDN博客 2、WebApplicationBuilder:是NET6引入的一个类,是建造者模式的典型应用 1>建造者模式的…

vue中根据html动态渲染内容

需求&#xff1a;根据数据中的html&#xff0c;因为我是在做填空&#xff0c;所以是需要将html中的_____替换成input&#xff0c;由于具体需求我使用的是元素contenteditable代替的可编辑的input html部分 <div class"wrap"><component :is"rendered…

【AI】AI编程助手:Cursor、Codeium、GitHub Copilot、Roo Cline、Tabnine

文章目录 一、基本特性对比二、收费标准三、私有部署能力1、Tabnine2、Roo Code 三、代码补全与自然语言生成代码四、安装独立的IDE安装插件安装 五、基本使用&#xff08;一&#xff09;Cursor&#xff08;二&#xff09;GitHub Copilot1、获取代码建议2.聊天1&#xff09;上下…

三轴云台之角速度信号篇

三轴云台的角速度信号主要通过其内置的传感器&#xff08;如陀螺仪&#xff09;来感知和测量。 一、角速度信号的感知与测量 在三轴云台中&#xff0c;陀螺仪是测量角速度的关键组件。它通常安装在三个互相垂直的轴上&#xff08;通常为X、Y、Z轴&#xff09;&#xff0c;能够…

Grid 布局实现三栏布局

使用 CSS Grid 布局实现三栏布局(左右固定 100px,中间自适应)的核心原理是通过网格模板精确控制列宽分配。以下是具体实现方法及优化技巧: 一、基础实现 ​父容器设置 为外层容器添加 display: grid 使其成为网格容器,并通过 grid-template-columns 定义列宽 css .contain…

绿盟春招实习一面

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

进制转换(R转十)(1290. 二进制转换十进制、1292. 十六进制转十进制、1291. 八进制转十进制、1405. 小丽找潜在的素数)

题单地址&#xff1a;题单中心-东方博宜OJ 这里以二进制转十进制为例&#xff08;按位加权求和法&#xff09; 1290. 二进制转换十进制 问题描述 请将一个 25 位以内的 2 进制正整数转换为 1010 进制&#xff01; 输入 一个 25 位以内的二进制正整数。 输出 该数对应的…

Redis 本地安装

首先安装&#xff1a; https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-from-source/ 进入root目录 tar -xzvf redis-stable.tar.gz cd redis-stable make然后 install sudo make install最后可以直接启动 redis-server但是此时启…

9.嗅探与Wireshark进阶分析

嗅探与Wireshark进阶分析 第一部分&#xff1a;嗅探的概念与重要性第二部分&#xff1a;Wireshark进阶功能第三部分&#xff1a;嗅探实践与分析总结 目标&#xff1a; • 理解嗅探&#xff08;Sniffing&#xff09;的概念及其在网络安全中的作用 • 掌握Wireshark的进阶功能&a…

在 VSCode 远程开发环境下使用 Git 常用命令

在日常开发过程中&#xff0c;无论是单人项目还是团队协作&#xff0c;Git 都是版本管理的利器。尤其是在使用 VSCode 连接远程服务器进行代码开发时&#xff0c;Git 不仅能帮助你管理代码版本&#xff0c;还能让多人协作变得更加高效。本文将介绍一些常用的 Git 命令&#xff…

npm 命令使用文档

目录 简介安装与配置基础命令依赖管理版本控制脚本管理包发布高级命令配置管理最佳实践常见问题 1. 简介 npm (Node Package Manager) 是 Node.js 的官方包管理工具&#xff0c;提供&#xff1a; 130万 开源包的注册表访问依赖解析与版本管理项目脚本自动化私有包管理能力完…