【Python】Matplotlib图例进阶:plt.legend()的深度定制与实战技巧

1. 图例基础:从自动生成到精确定位

刚接触Matplotlib绘图时,我最常遇到的困惑就是:明明画了三条曲线,怎么图例只显示两条?或者图例把关键数据挡住了怎么办?这些问题的答案都藏在plt.legend()这个看似简单的函数里。

先看最基本的用法。当我们用plot()画线时,只要给每条线加上label参数,最后调用plt.legend()就能自动生成图例:

import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 10, 100) plt.plot(x, np.sin(x), label='正弦曲线') plt.plot(x, np.cos(x), label='余弦曲线') plt.legend() plt.show() 

这个基础用法90%的情况下都能工作,但遇到复杂图表时就力不从心了。比如当我们需要:

  • 把图例放在图表外侧
  • 一个图表显示多个图例
  • 调整图例的边框样式和背景透明度
  • 动态隐藏/显示特定图例项

这时候就需要深入了解legend()的参数了。最常用的loc参数控制图例位置,支持字符串和数字两种指定方式:

plt.legend(loc='upper right') # 字符串写法 plt.legend(loc=1) # 数字写法,1对应右上角 

位置参数完整对应表:

字符串值数字值位置
'best'0自动选择最佳
'upper right'1右上角
'upper left'2左上角
'lower left'3左下角
'lower right'4右下角

Read more

Springboot 4.0十字路口:虚拟线程时代,WebFlux与WebMVC的终极选择

Springboot 4.0十字路口:虚拟线程时代,WebFlux与WebMVC的终极选择

🧑 博主简介:ZEEKLOG博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可关注公众号 “ 心海云图 ” 微信小程序搜索“历代文学”)总架构师,16年工作经验,精通Java编程,高并发设计,分布式系统架构设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。 🤝商务合作:请搜索或扫码关注微信公众号 “ 心海云图 ” Springboot 4.0十字路口:虚拟线程时代,WebFlux与WebMVC的终极选择 当虚拟线程以革命性的姿态降临Java世界,一场关于并发编程范式的静默变革正在发生。Spring开发者站在了选择的十字路口。 2023年,Java 21将虚拟线程从预览特性转为正式功能,这一变化看似只是JVM内部的优化,实则撼动了整个

By Ne0inhk

Fish Speech-1.5多语种语音合成实战:中英混合文本发音规则处理技巧

Fish Speech-1.5多语种语音合成实战:中英混合文本发音规则处理技巧 1. 引言 语音合成技术正在改变我们与数字内容互动的方式,而多语种混合文本的合成更是其中的技术难点。想象一下,当你需要制作一段同时包含中文和英文的教学音频,或者一段中英混合的产品介绍时,传统的单语种语音合成往往会出现发音不自然、语调突兀的问题。 Fish Speech V1.5作为基于超过100万小时多语言音频数据训练的先进文本转语音模型,特别擅长处理这类混合语言场景。本文将带你从零开始,通过xinference 2.0.0部署Fish Speech-1.5,并重点分享中英混合文本的发音处理技巧,让你能够生成自然流畅的多语言语音内容。 2. Fish Speech-1.5模型概述 2.1 模型特点与优势 Fish Speech V1.5是一个功能强大的多语言文本转语音模型,其核心优势在于支持12种主要语言的高质量语音合成。该模型基于海量音频数据训练,其中中文和英语各超过30万小时,日语超过10万小时,其他语言如德语、法语、西班牙语等也都有充足的训练数据。 这种大规模多语言训练使得模型在处理

By Ne0inhk
他到底喜欢我吗?赛博塔罗Java+前端实现,一键解答!

他到底喜欢我吗?赛博塔罗Java+前端实现,一键解答!

个人主页-爱因斯晨 文章专栏-赛博算命 原来我们在已往的赛博算命系列文章中的源码已经传到我的Github仓库中,有兴趣的家人们可以自己运行查看。 Github 源码中的一些不足,还恳请业界大佬们批评指正! 本文章的源码已经打包至资源绑定,仓库中也同步更新。 一、引言 在数字化浪潮席卷全球的当下,传统塔罗牌占卜这一古老智慧也迎来了新的表达形式 ——“赛博塔罗”。本文档旨在深入剖析塔罗牌的核心原理,并详细介绍如何利用 Java 语言实现一个简易的塔罗牌预测程序,展现传统神秘学与现代编程技术的融合。 二、塔罗牌原理 (一)集体潜意识与原型理论 瑞士心理学家卡尔・荣格提出的 “集体潜意识” 理论,为塔罗牌的运作提供了重要的心理学支撑。该理论认为,人类拥有超越个体经验的共同心理结构,其中蕴含着 “原型”—— 即普遍存在的、象征性的模式或形象。 塔罗牌的 22 张大阿尔卡那牌恰好与这些基本原型相对应。例如,“愚人” 代表着天真与新开始的原型,“魔术师” 象征着创造力与潜能的原型,“女祭司” 则体现了智慧与直觉的原型。这些原型是全人类共通的心理元素,这也正是不同文化背景的人都能

By Ne0inhk
WebGL缓冲区使用与多点绘制实战

WebGL缓冲区使用与多点绘制实战

一、前言 1.1 适用人群 本教程适合已经了解基础的HTML/CSS/JavaScript,对WebGL有基本概念(知道着色器、绘制流程),但希望深入理解其核心性能机制——缓冲区(Buffer) 的开发者。我们将聚焦于“如何使用缓冲区高效地管理和绘制大量顶点数据”,解决“如何绘制成千上万个点而不卡顿”的核心痛点。 效果如图: 1.2 核心目标 * 理解本质:掌握WebGL缓冲区(Buffer)的作用,它如何与GPU通信,以及为何它是高性能绘制的基石。 * 掌握方法:学会创建、绑定、配置和数据填充缓冲区,实现单次绘制调用(draw call)渲染多个点。 * 实战应用:通过完整代码示例,从绘制单个点进阶到动态绘制成百上千个随机点,并理解其性能优势。 二、基础知识:什么是WebGL缓冲区(Buffer)? 功能说明 在WebGL中,缓冲区是GPU上的一块内存区域,用于存储顶点数据(

By Ne0inhk