首页 > 编程问答 >Xticks 标签贴在我的绘图 matplotlib 的右上角?

Xticks 标签贴在我的绘图 matplotlib 的右上角?

时间:2024-08-07 04:21:41浏览次数:6  
标签:python matplotlib ticks

我的顶部 xticks 标签卡在 matplotlit 图的右上角。如何将它们设置在时间序列的正确位置?底部的 xtick 标签很好。我只想将顶级的与他们匹配。我怎样才能做到这一点?请参阅下面的代码和图像。

import matplotlib.pyplot as plt

time_zones = pd.to_datetime(["2022-07-31 2:00", "2022-07-31 6:00", "2022-07-31 9:00", 
                             "2022-07-31 14:00", "2022-07-31 17:00", "2022-07-31 23:55"])

fig, ax = plt.subplots(figsize=(14,8))
ax.spines["top"].set_visible(False)
ax.spines["bottom"].set_visible(False)
ax.spines["right"].set_visible(False)
ax.spines["left"].set_linestyle(":")
ax.spines["left"].set_linewidth(.36) 
ax.plot(df.loc["2022-07-31", "High"], color="green")
ax.plot(df.loc["2022-07-31", "Low"], color="red")

ax.set_ylabel("Price (€)", color="b")
ax.tick_params(labeltop=False, labelbottom=True)
ax.set_xticks(time_zones, ["02:00", "06:00", "09:00", "14:00","17:00", "00:00"])

axT = ax.twiny()
axT.tick_params(labeltop=True, labelbottom=False)
axT.set_xticks(time_zones, ["Hong Kong", "Dubai", "London", "New York","Los Angeles", "Sydney"], fontsize=12, color="b")

ax.grid(True, linestyle=":")
plt.box(False)
plt.show()

请参阅绘图链接

  1. 我尝试旋转并设置不同的刻度参数,但没有成功。有人能帮我一下吗?

问题在于,在第二个轴 ( axT ) 上设置 x 刻度的位置,但没有为该轴指定任何数据,因此刻度最终位于默认空间中。

不需要使用 twiny 来做到这一点。 只需使用 ax.set_xticklabels 为顶部 x 轴指定不同的标签。

以下是修改后的代码:

import matplotlib.pyplot as plt
import pandas as pd

# 示例数据
df = pd.DataFrame({
    'High': [10, 12, 15, 14, 16, 18],
    'Low': [8, 9, 12, 11, 13, 15]
}, index=pd.to_datetime(["2022-07-31 02:00", "2022-07-31 06:00", "2022-07-31 09:00", 
                             "2022-07-31 14:00", "2022-07-31 17:00", "2022-07-31 23:55"]))

time_zones = pd.to_datetime(["2022-07-31 2:00", "2022-07-31 6:00", "2022-07-31 9:00", 
                             "2022-07-31 14:00", "2022-07-31 17:00", "2022-07-31 23:55"])

fig, ax = plt.subplots(figsize=(14,8))
ax.spines["top"].set_visible(False)
ax.spines["bottom"].set_visible(False)
ax.spines["right"].set_visible(False)
ax.spines["left"].set_linestyle(":")
ax.spines["left"].set_linewidth(.36) 
ax.plot(df.loc["2022-07-31", "High"], color="green")
ax.plot(df.loc["2022-07-31", "Low"], color="red")

ax.set_ylabel("Price (€)", color="b")
ax.tick_params(labelbottom=True)
ax.set_xticks(time_zones, ["02:00", "06:00", "09:00", "14:00","17:00", "00:00"])

# 设置顶部 x 轴的标签
ax.set_xticklabels(["Hong Kong", "Dubai", "London", "New York","Los Angeles", "Sydney"], 
                   minor=False, fontsize=12, color="b")
ax.tick_params(axis='x', which='major', labeltop=True, labelbottom=False)

ax.grid(True, linestyle=":")
plt.box(False)
plt.show()

此代码将:

  1. 删除 twiny 轴的创建 : 不需要第二个轴来实现想要的效果。
  2. 使用 ax.set_xticklabels 设置顶部标签 : 此函数允许为现有的 x 刻度设置不同的标签。
  3. 使用 labeltop=True labelbottom=False : 这将确保仅显示顶部的标签。

这将生成一个图形,其中时间在底部,城市在顶部对齐,所有内容都位于正确的位置。

标签:python,matplotlib,ticks
From: 78840852

相关文章

  • 如何在 Python 中使用 Langchain 返回已使用的上下文以进行回答
    我已经构建了一个像这样的RAG系统:defformat_docs(docs):return"\n\n".join(doc.page_contentfordocindocs)response_schemas=[ResponseSchema(name="price",description="Price",type="float"),ResponseSchema(......
  • 如何从 python socket.sendmsg 获取套接字 Tx 时间戳
    在阅读此处、此处和此处时,我发现在Linux系统上,您可以通过设置套接字选项来请求接收和传输的数据包的时间戳。我目前可以使用SO_TIMESTAMPNS和SO_TIMESTAMPING来通过recvmsg获取Rx时间戳。使用sendmsg我不知道......
  • Python 类型注释中“|”两边是否“强制”使用空格?
    “Union运算符”|没有出现在PEP8的其他建议中的“始终被空格包围的运算符”列表中因此,应该可以将其样式设置为类似于算术运算符,并删除圆括号、方括号内的空格,或者如果该运算符比表达式中的其他运算符具有更高的优先级。在我看来,删除空格可以提高表达式......
  • ArcPro (3.2+) Python 脚本工具中从 .atbx Toolbox 相对导入本地模块
    我设置了一个库和关联的ArcGISToolbox,以便:/root├──Toolbox.atbx├──mylib│└──my_function.py├──my_tools│└──my_gp_script.py我将代码存储库的开发克隆保存在公司共享服务器上的一个位置,并在GitHub上托管一份副本。当我进行更新时,我会......
  • Python vs. R:揭秘机器学习领域的双璧
    一、引言1.1背景介绍随着大数据和人工智能技术的飞速发展,机器学习已经成为了一个热门领域。在机器学习领域,Python和R是两种广泛使用的编程语言。Python因其简洁易读的语法和强大的库支持,成为了最受欢迎的编程语言之一。而R则以其强大的统计分析和数据可视化能力,在统计学......
  • Windows10 安装编译后的 pysqlcipher3-1.2.1 基于 Python 3.8.10
    Windows10安装编译后的pysqlcipher3-1.2.1基于Python3.8.10本文主要是将直接安装编译后的文件,不一定的成功,但是可以尝试使用,若无法直接安装,请参考编译过程,自行编译安装,编译过程见这里安装pysqlcipher3这里用32位举例因为64位安装完全相同,只需要把对应的位数换成64......
  • 【Python】Python基础语法知识点汇集
    Python是一种高级的、解释型的编程语言,以其清晰的语法和代码可读性而闻名。本篇文章将汇集Python编程的基础语法知识点,为初学者提供一个全面的学习指南。......
  • 启动Python 的内置服务器访问本地图片
    要使用Python的内置服务器访问本地图片并正确地显示在浏览器中,你需要将图片文件放在内置服务器的根目录或其子目录中。以下是详细步骤:1.将图片文件复制到服务器根目录:例如,将zheng.jpeg文件复制到一个特定的目录中(例如,你的项目目录)。假设你将图片文件复制到C:\Users\panda......
  • 17:Python数据类型练习题
    #1获取c1,c2相同的元素列表c1=[11,22,33]c2=[22,33,44]foriinc1:ifiinc2:print(i)#2获取c1中有,c2没有的元素列表foriinc1:ifinotinc2:print(i)#3获取c2中有,c1没有的元素列表foriinc2:ifinotinc1:print(i)#4获......
  • (Jmeter新玩法)Python 调 Jmeter执行参数化jmx脚本
    #Python调Jmeter执行参数化jmx脚本importosfromos.pathimportjoinimporttimeimportrefromstringimportTemplatejmeter_Home=r"F:\softtotal\xxx\bin\jmeter.bat"#jmx文件路径currpath=os.path.dirname(os.path.realpath(__file__))#要运行的jmx脚......