【关于《Python从入门到实践》书中第16章的作图问题】python使用matplotlib作图:如何合理设置x轴日期格式

Python自动化生成PPT报告:从Excel到专业幻灯片的工程化实践 PPT自动化生成是办公效率提升的关键技术,其本质是将演示文稿视为可编程文档对象,通过数据驱动实现内容动态渲染。核心原理在于解耦数据层、逻辑层与表现层,依托python-pptx构建模板化结构,结合openpyxl精准解析Excel、matplotlib生成高保真图表,确保跨平台稳定性和像素级样式控制。该方案规避了VBA宏安全限制与Power Automate调试困难等常见痛点,具备强容错性(如脏数据自动清洗、日期格式智能识别)和业务适应性(如区域数量变化自动分页、中文字体嵌入防乱码),广泛适用于金融周报、医 阅读详情

       本人是Python语言初学者。因在阅读《Python从入门到实践》一书的第十六章的实践过程中,发现按书中示例代码所做的图形与书中所示图形不符:X轴的日期显示不符(fig.autofmt_xdate()无法实现合理设置X轴日期格式)。

       故有此文。

书中代码所得的图形。

       百度找到一种方法,通过fig.add_subplot(1,1,1)在图形原位置重新编辑设置X轴的格式。

       索引:Matplotlib绘图双纵坐标轴设置及控制设置时间格式

       本方法除书中用到的csv和datetime库,还需要下面的:

import matplotlib.pyplot as plt
import matplotlib.dates as mdate
import pandas as pd

       首先在原位值设置一个新的图形(变量名不一定ax):

fig = plt.figure(figsize=(10,6))
ax = fig.add_subplot(1,1,1)

       然后,设置x轴的格式为[%b:月份英文缩写] [%Y:年份]:

plt.xlabel(' ',fontsize=16)
ax.xaxis.set_major_formatter(mdate.DateFormatter('%b %Y'))

       之后,设置x轴刻度范围,这里要用到pandas库(简写pd):

plt.xlabel(' ',fontsize=16)
ax.xaxis.set_major_formatter(mdate.DateFormatter('%b %Y'))
plt.xticks(pd.date_range('2014-01','2014-12',freq='MS'),rotation=30) # freq='MS',设置刻度格式为每月的开始(month start frequency)

关于pandas.date_range()中freq设置方法,见:pandas-date_range(freq)

经过上述代码修改,现在的代码为(示例代码为书中第十六章习题16-2,多了个两地天气对比):

# -*- coding:utf-8 -*-
"""
Death Valley and Sitka
temperatures:highs and lows

@auther:Wangsheng
"""

import csv
from datetime import datetime

import matplotlib.pyplot as plt
import matplotlib.dates as mdate
import pandas as pd

filename1 = 'death_valley_2014.csv'
with open(filename1) as f_obj:
    reader = csv.reader(f_obj)
    header_row = next(reader)

    dates_D,highs_D,lows_D = [ ], [ ],[ ]
    for row in reader:
        try:
            current_date = datetime.strptime(row[0],'%Y-%m-%d')
            high = int(row[1])
            low = int(row[3])
        except ValueError:
            print(current_date,"missing data")
        else:
            dates_D.append(current_date)
            highs_D.append(high)
            lows_D.append(low)
            
filename2 = 'sitka_weather_2014.csv'
with open(filename2) as f_obj:
    reader = csv.reader(f_obj)
    header_row = next(reader)

    dates_S,highs_S,lows_S = [ ], [ ],[ ]
    for row in reader:
        try:
            current_date = datetime.strptime(row[0],'%Y-%m-%d')
            high = int(row[1])
            low = int(row[3])
        except ValueError:
            print(current_date,"missing data")
        else:
            dates_S.append(current_date)
            highs_S.append(high)
            lows_S.append(low)
# 根据数据绘制图形
fig = plt.figure(figsize=(10,6))
ax = fig.add_subplot(1,1,1)

plt.plot(dates_D,highs_D,label='Death Valley highs',c='red',alpha=0.5)  # alpha设置line的透明度0~1,0为完全透明
plt.plot(dates_D,lows_D,label='Death Valley lows',c='blue',alpha=0.5)

plt.plot(dates_S,highs_S,label='Sitka highs',c='red',alpha=0.3)
plt.plot(dates_S,lows_S,label='Sitka lows',c='blue',alpha=0.3)

plt.fill_between(dates_D,highs_D,lows_D,facecolor='blue',alpha=0.2)
plt.fill_between(dates_S,highs_S,lows_S,facecolor='blue',alpha=0.15)
# 设置图形的格式
plt.title('Daily high and low temperatures - 2014\nDeath Valley and Sitka, CA',fontsize=20)
#设置x轴日期格式
plt.xlabel(' ',fontsize=16)
ax.xaxis.set_major_formatter(mdate.DateFormatter('%b %Y'))
plt.xticks(pd.date_range('2014-01','2014-12',freq='MS'),rotation=30)
plt.ylabel("Temperature ( F )",fontsize=16)
plt.ylim([0,120])  # 设置y轴刻度范围
plt.tick_params(axis='both',which='major',labelsize=16)
plt.legend()  # 用于显示诸如plt.plot(dates_S,highs_S,label='Sitka highs',c='red',alpha=0.3)中的label标签
plt.show()

所得图形。

 

希望对你有帮助。

 

公众号:胜言

博客:wangsheng.tech

THANKS.

 

Python数据可视化实战:用Pandas+Matplotlib自动化生成专业图表 数据可视化是数据分析与工程实践中的核心环节,它将抽象数据转化为直观图形,帮助人们快速洞察趋势与模式。其原理在于通过编程或工具将结构化数据映射为视觉元素,如折线、柱状或散点。在技术价值上,自动化图表生成能极大提升报告效率,确保结果可复现,并支持高度定制化以满足不同场景需求,如学术研究、商业汇报或系统监控。基于Python生态,Pandas库提供了强大的多列数据处理能力,能智能解析CSV、Excel等格式,高效完成数据清洗与转换;而Matplotlib作为绘图基石,则赋予用户对图表每个像素的精细控制权,支持复杂 阅读详情

相关推荐

Python数据分析实战:模拟音乐榜单趋势与可视化

数据分析是挖掘信息价值、驱动决策的核心技术,其原理在于通过系统性的方法处理、转换和建模数据,以发现规律、预测趋势。在工程实践中,Python凭借Pandas、Matplotlib等强大库,成为数据清洗、分析和可视化的首选工具,广泛应用于商业智能、市场研究等领域。以音乐产业为例,榜单数据是衡量歌曲流行度的重要指标,通过分析Spotify全球日榜和Billboard Hot 100等榜单的排名变化,可以洞察歌曲的生命周期、传播效果及商业表现。本文以Olivia Rodrigo的热门单曲《Good 4 u》为案例

java2000.net 435

Matplotlib线图实战:时间序列可视化核心技巧与避坑指南

线图是数据可视化中最基础也最易被误用的图表类型,其本质是表达两个有序序列间的映射关系,尤其在时间序列分析中,X轴的时间精度(如datetime64[ns])、坐标对齐、刻度格式化直接决定图表可信度。掌握plt.plot()底层逻辑、twinx()双Y轴协同机制及mdates时间轴控制,不仅能避免日期重叠、颜色混淆、回归失真等高频问题,更能支撑金融风控、IoT监控、用户行为分析等真实工程场景。本文聚焦Matplotlib原生能力,强调参数选择背后的视觉心理学与计算安全性,提供可复用于生产环境的最小可行绘图范式

weixin_30603633的博客 476

Python数据分析实战:从环境搭建到可视化全流程指南

数据分析是现代数据处理的核心环节,它通过系统性的方法从原始数据中提取有价值的信息和洞见。其基本原理涉及数据收集、清洗、转换和建模,最终通过可视化呈现结果。在技术层面,Python凭借其强大的生态库,如NumPy和Pandas,已成为数据分析的主流工具,显著提升了处理效率和灵活性。这些技术的价值在于能够将复杂的数据流程自动化,支持从业务理解到结果部署的全周期管理。在实际应用中,数据分析广泛应用于电商销售分析、客户行为挖掘、市场趋势预测等多个场景,帮助企业和研究者做出数据驱动的决策。本文以电商销售数据为例,详细

weixin_33896726的博客 529

Python【Matplotlib】交互式时间序列绘图,将x轴设置为日期时间格式并和鼠标拖动缩放相结合

我们已经可以通过鼠标拖动缩放坐标范围和移动图例,来实现动态交互式绘图了,对于x轴是时间序列的绘图需求,能否也实现动态交互式绘图呢?答案是肯定的,接下来我将详细描述其实现的方式。

qq_43324506的博客 2584

Python常用模块全解析:从数据处理到Web开发

Python模块是扩展语言功能的核心组件,通过封装可重用代码实现特定功能。其工作原理是通过import机制将模块代码加载到解释器中,形成独立命名空间。在数据处理领域,NumPy提供高效数组运算,Pandas实现结构化数据处理,Matplotlib完成可视化呈现;Web开发中Requests处理HTTP请求,BeautifulSoup解析HTML文档。合理选择模块能显著提升开发效率,这些工具广泛应用于数据分析、自动化测试、机器学习等场景。掌握Python模块体系是成为高效开发者的关键步骤,本文系统梳理了各领域

weixin_34242331的博客 401

ArcGIS 10.8软件安装包免费下载及安装教程

ArcGIS 10.8安装教程

qq_44894692的博客 2万+

Matplotlib 格式化 X 轴的日期时间,显示 1970 年 1 月 1 日或不显示问题

Matplotlib 格式化 X 轴的日期时间,显示 1970 年 1 月 1 日或不显示问题。

weixin_42267181的博客 1627

GEO数据挖掘实战:用R语言从GSE42872数据集中找到关键差异基因(附完整代码)

本文详细介绍了使用R语言从GSE42872数据集中挖掘关键差异基因的完整流程,包括数据下载、探针ID转换、差异表达分析和功能富集分析。通过实战代码演示,帮助生信研究者掌握GEO数据挖掘的核心技术,快速识别疾病相关基因并理解其生物学功能。

weixin_42625070的博客 365

【python绘图】Matplotlib绘图及设置(使用python制图)

matplotlib提供了快速绘图模块pyplot,它模仿了MATLAB的部分功能,能够高效的进行绘图。

Zincy星辰 7万+

机械臂抓取前言

机械臂相关的笔记

weixin_64037619的博客 3908

01 ArcGIS空间分析--水文分析--利用水文分析方法提取山谷山脊线

ArcGIS空间分析的一个特别好的分析教程是汤国安老师的空间分析的内容。 实例与练习 练习1. 利用水文分析方法提取山脊、山谷线 1. 背景:山脊线、山谷线是地形特征线,它们对地形、地貌具有一定的控制作用。它们与山顶点、谷底点以及鞍部点等一起构成了地形及其起伏变化的骨架结构。因此在数字地形分析中,山脊线和山谷线以及

Meditation 1万+

python matplotlib绘制折线图x轴时间如何设置_python-matplotlib:x轴上的时间戳格式

我正在尝试在天气数据图中格式化x轴.我对y轴感到满意,但是到目前为止,我为使x轴成为一种体面的,人类可读的格式所做的所有尝试都没有奏效.因此,经过数小时的反复试验,希望能对您有所帮助.我正在努力实现的目标最后,我希望每30分钟就有一个刻度线,每小时有一个垂直的虚线网格线,其下方写有HH:MM的时间,另外还有每天晚上00:00点写的日期.诸如此类(注意,前面的ASCII艺术不好!):: ...

weixin_42160398的博客 2717

Spark中Application、Job、Stage和Task区别详解

在Spark中,有一些关键的概念,如Application、Job、Stage和Task,它们描述了Spark作业的不同层次和组成部分。下面我将详细介绍每个概念,并通过示例说明它们之间的区别。

优快云 精品推荐 901

python x轴为年月格式_如何为matplotlib设置x轴上的日期格式

以下是一些工作代码:import matplotlib.pyplot as pltimport matplotlib.ticker as tkrimport matplotlib.dates as mdatesimport datetime# create figure instancefig1 = plt.figure(1)ax = fig1.add_subplot(2,1,1)start_da...

weixin_39590868的博客 3202

内模控制(IMC)——理论、应用与实践

内模控制方法的核心思想是利用被控对象的数学模型(即内模)构建控制器,使得控制器可以“预知”被控系统的动态响应,从而在控制输入中提前补偿模型的固有特性和扰动影响。常见的内模控制结构中,将系统分为无延迟部分和扰动部分,并利用内部模型预测输出值,再通过反馈回路进行误差修正。utuimctufbtutui​mctuf​bt其中,uimctu_imc(t)ui​mct为内模预测得到的预补偿控制量,ufbtu_fb(t)uf​bt。

闲人编程的博客 2632

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

专业解决各种上架过包问题,专业团队专业处理 750

Python matplotlib绘制甘特图的三种方法:从基础到工程实践

甘特图是一种经典的项目管理可视化工具,通过横向条形图直观展示任务的时间跨度、顺序与进度。其核心原理是将时间轴映射为坐标轴,将任务表示为特定位置和长度的水平条形。在数据驱动的工程实践中,自动化生成甘特图能极大提升项目管理与报告效率。Python的matplotlib库虽无原生甘特图函数,但通过灵活组合其基础绘图组件,可实现高度定制化的图表生成。本文聚焦三种主流实现方式:基于`barh`函数的底层构建法、利用`broken_barh`的区间绘制法,以及结合Pandas的数据驱动法。这三种方法分别适用于教学理解、

weixin_33933118的博客 436

【重温童年】基于tkinter模块设计的Q宠大乐斗武器升星模拟器:重温经典,畅享休闲时光

与传统的Q宠大乐斗不同,这款模拟器还加入了一个创新的功能——自定义升星概率。玩家可以根据自己的喜好和策略,为不同的武器设置不同的成功率和降级率。比如,你可以将“嗜血”这把武器的升星难度设置得极高,以体现其稀有性和强大威力;也可以将“平底锅”这样的普通武器设置得相对容易升星,让玩家在升级过程中感受到更多的成就感。这种自定义的概率设置,不仅增加了游戏的趣味性和挑战性,还让玩家在升级过程中有了更多的策略和选择。你可以根据自己的武器库和卷轴数量,制定出最合适的升级计划,从而在游戏中占据先机。

nmdbbzcl的博客 1236

Python经典图像绘制:Matplotlib+NumPy+Pandas协同实战

图像绘制是数据可视化的基础能力,其核心在于理解数据生成、组织与呈现的完整链路。NumPy提供高效数值计算与向量化支持,Pandas实现结构化数据清洗与智能索引,Matplotlib则通过面向对象API确保跨平台、高精度、可复现的视觉输出。这种组合不仅支撑学术论文图表、工业报表、运维监控等专业场景,更构成Plotly、Seaborn等高级库的底层依赖。掌握经典绘制,意味着能规避中文乱码、时间轴偏移、内存泄漏、导出失真等高频工程问题,实现从‘能画’到‘稳画’‘准画’‘可交付画’的跃迁。

weixin_34166472的博客 390

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python零基础入门:从语法到爬虫与数据分析的完整学习路线

Python是一门兼具简洁与强大的通用编程语言,凭借其丰富的第三方库,成为数据采集、分析和自动化处理的首选工具。无论是初学编程的新手,还是希望提升数据处理能力的职场人士,掌握Python都能显著提高工作效率。在网络爬虫领域,通过requests和BeautifulSoup等库,可以高效获取公开网页数据;而在数据分析中,pandas、matplotlib等工具能完成数据清洗、聚合统计与可视化呈现。这两大技术方向相互衔接,构成从数据获取到结果输出的完整链路。本文从环境配置、语法基础出发,结合实践案例,梳理一条从

weixin_34099526的博客 325

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Python数据可视化实战:从榜单排名分析到时间序列图表生成

时间序列数据可视化是数据分析领域的核心技能,它通过将数据点按时间顺序排列并图形化展示,揭示数据随时间变化的趋势、周期和异常。其原理在于将抽象的时间维度和数值维度映射到直观的二维坐标系中,便于人类视觉系统识别模式。这项技术的价值在于能将复杂的历史数据转化为易于理解的洞察,广泛应用于金融分析、业务监控、市场研究等领域。在音乐产业中,榜单排名数据是典型的时间序列,分析其变化能评估作品的市场表现。本文以音乐榜单排名分析为具体应用场景,详细演示了如何利用Python的Pandas库进行数据清洗与重塑,并借助Matpl

weixin_33827590的博客 327

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python数据分析实战:10小时掌握从爬虫到报告的全流程项目

数据分析是现代数据驱动决策的核心环节,它通过系统性的方法从原始数据中提取有价值的信息和洞察。其基本原理通常遵循一个端到端的闭环流程:从明确业务问题开始,经历数据获取、清洗、探索性分析、建模(可选)到最终的可视化呈现与报告。这一过程的技术价值在于将分散、原始的数据转化为可指导行动的见解,从而优化运营、发现机会或预测趋势。在应用场景上,数据分析广泛应用于电商、金融、物联网、健康监测等众多领域,用于用户行为分析、销售预测、设备监控等。本文以“苏州天气数据分析”这一具体项目为实战载体,系统性地串联了Python爬虫

weixin_33794672的博客 414

Python零基础实战:一周掌握爬虫与数据分析核心技能

在数据驱动的时代,掌握数据处理与自动化获取信息的能力已成为一项基础技能。Python作为一门语法简洁、生态丰富的编程语言,是实现这一目标的理想工具。其核心原理在于通过清晰的语法结构和强大的第三方库,将复杂的数据操作抽象为简单的代码指令。从技术价值看,Python不仅能快速处理和分析结构化数据,还能自动化地从互联网获取信息,极大地提升了工作效率和数据洞察力。在应用场景上,无论是市场调研、竞品分析,还是学术研究、自动化报表生成,Python都能发挥关键作用。本文聚焦于Python在数据获取与处理领域的两个核心应

weixin_34393428的博客 302

Python学习避坑指南:语法基础、爬虫实战、数据分析三大核心技能

Python作为一门广泛应用于数据科学和网络编程的脚本语言,其核心价值在于简洁的语法设计和强大的生态系统。从技术原理角度看,Python通过动态类型系统和丰富的第三方库支持,实现了快速开发和高效数据处理。在工程实践中,Python的价值主要体现在自动化脚本、数据采集和分析可视化三大方向。其中,爬虫技术基于HTTP协议实现网络数据获取,数据分析则依赖pandas等库进行数据清洗和统计分析。这些技术广泛应用于电商监控、舆情分析和业务报表等场景。本文聚焦Python学习中最实用的语法基础、爬虫实战和数据分析三个核

weixin_30634661的博客 409

Python数据可视化Prompt工程:5个工程化习惯提升AI代码可用率

数据可视化Prompt工程是将人类业务需求精准转化为可执行代码的技术实践,其核心在于结构化表达数据形态、视觉编码规则与工程约束。不同于泛化的提示词技巧,它强调数据结构声明(如DataFrame列名与类型)、参数化视觉控制(figsize、color_palette等)、任务分层拆解(数据/逻辑/交付三层)、防御性技术约束(仅限matplotlib+seaborn)及结果自验证机制。这些方法显著提升首次生成代码的可用性,降低调试成本,适用于金融仪表盘、电商漏斗图、医疗统计图表等真实场景,是数据工程师与AI建立

weixin_30727835的博客 374

Python爬虫与数据分析实战:从零基础到项目精通

Python作为一门功能强大的编程语言,在数据采集与处理领域有着广泛的应用。其核心原理在于通过简洁的语法和丰富的库生态系统,实现高效的数据操作。在技术价值方面,Python的数据处理能力主要体现在爬虫技术和数据分析两个关键领域。爬虫技术基于HTTP协议,通过requests等库实现网页数据的自动化采集;而数据分析则依托Pandas、NumPy等工具库,完成数据清洗、转换和可视化等核心任务。这些技术的应用场景涵盖学术研究、商业智能、市场分析等多个维度。本文聚焦Python爬虫与数据分析的实战应用,通过完整的项

weixin_34050005的博客 411
下一篇: 【寻找第n个默尼森数】利用python找出第n个默尼森数
wxid:yiwoxuan
博客等级 码龄9年 1249粉丝 112原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值