首页 > 编程问答 >如何旋转辅助 y 轴标签,使其不与 y 刻度、matplotlib 重叠

如何旋转辅助 y 轴标签,使其不与 y 刻度、matplotlib 重叠

时间:2024-08-02 16:58:22浏览次数:8  
标签:python matplotlib

我正在尝试将辅助 y 标签 旋转到 270 degrees ,但是当我通过 rotate=270 参数执行此操作时,它会与我的 y 刻度 文本重叠。任何想法如何解决这一问题?

fig, ax = plt.subplots()

ax.plot(df.index,df.tripTime,label='Fishing Effort', marker='D')
ax2=ax.twinx()
ax2.plot(tr.index,tr.cost, 'g',label='Fuel Expenditure', marker='d')

lines = ax.get_lines() + ax2.get_lines()
ax.legend(lines,[line.get_label() for line in lines], loc='lower left')
ax.set_ylim((0, 18))

ax2.set_ylabel('Cost ($)',color='g', rotation=270)

for tl in ax2.get_yticklabels():
    tl.set_color('g')

ax.set_ylabel('Fishing Effort (hrs)')
ax.set_xlabel('Time (days)')
plt.show()

enter image description here


要旋转辅助 y 轴标签而不与 y 刻度重叠,需要在旋转标签后调整 y 轴标签的填充。这可以使用 matplotlib.ticker.Formatter 对象中的 labelpad 参数来完成。

请在的代码中尝试以下修改:

import matplotlib.ticker as ticker

# ...的现有代码...

ax2.set_ylabel('Cost ($)', color='g', rotation=270)
ax2.yaxis.set_label_position("right") # 确保标签位于右侧
ax2.yaxis.tick_right() # 将刻度移到右侧

# 在这里添加填充
y_formatter = ticker.ScalarFormatter(useOffset=False)
y_formatter.set_label_padding(10)  # 调整填充值
ax2.yaxis.set_major_formatter(y_formatter)

# ...的现有代码...

这会在 y 轴标签和刻度之间添加 10 个单位的填充。可以调整 labelpad 值以满足的需要。

以下是代码完整修改后的版本:

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import pandas as pd

# 示例数据
df = pd.DataFrame({'tripTime': [2, 4, 6, 8, 10, 12, 14, 16]})
df.index = range(1, len(df) + 1)
tr = pd.DataFrame({'cost': [10, 20, 30, 40, 50, 60, 70, 80]})
tr.index = range(1, len(tr) + 1)

fig, ax = plt.subplots()

ax.plot(df.index, df.tripTime, label='Fishing Effort', marker='D')
ax2 = ax.twinx()
ax2.plot(tr.index, tr.cost, 'g', label='Fuel Expenditure', marker='d')

lines = ax.get_lines() + ax2.get_lines()
ax.legend(lines, [line.get_label() for line in lines], loc='lower left')
ax.set_ylim((0, 18))

ax2.set_ylabel('Cost ($)', color='g', rotation=270)
ax2.yaxis.set_label_position("right")
ax2.yaxis.tick_right()

# 添加填充
y_formatter = ticker.ScalarFormatter(useOffset=False)
y_formatter.set_label_padding(10)
ax2.yaxis.set_major_formatter(y_formatter)

for tl in ax2.get_yticklabels():
    tl.set_color('g')

ax.set_ylabel('Fishing Effort (hrs)')
ax.set_xlabel('Time (days)')
plt.show()

这应该可以解决重叠问题,并使的绘图更易于阅读。

标签:python,matplotlib
From: 35020409

相关文章

  • Python基础教程:全方位掌握print函数
    文章目录1.基本打印2.打印多个参数3.格式化输出使用`%`格式化使用`.format()`方法使用f-string(Python3.6+)4.自定义分隔符5.抑制换行6.打印到文件7.打印对象的字符串表示8.打印时的错误处理9.立即刷新输出缓冲区10.结语1.基本打印打印文本或变......
  • 如何使用Python代码获取Power Bi Visual Level数据
    我有一个Powerbi报告,托管在本地报告服务器上。现在我想使用python代码检索视觉级别数据。例如,我有一个卡片视觉效果,显示为“100”,这个“100”是根据度量计算的,对于某些视觉效果,该值直接来自数据集中的列值。现在我想检索测量值为“100”,而且我还需要直接来自python代......
  • 如何在python中通过requests和opencv加载uint16 png文件
    我正在尝试从URL自动加载图像,然后将其加载到numpy矩阵。为此,我需要使用requests和opencv库。对于像uint8这样编码的标准图像,它以正确的方式工作,并且由于值溢出而损坏了uint16图像。这是我现在正在使用的一个简单的最小代码:importrequestsimportcv2importnumpy......
  • Selenium + Python 自动化测试01(准备篇)
        本篇文章主要讲述Selenium+Python自动化测试-准备篇。主要时相关软件介绍,下载,安卓等。一、Selenium简介    1、Selenium是什么?        官网描述:        Primarily,itisforautomatingwebapplicationsfortestingpurposes,......
  • 如何使用 Python 在 2D 曲面上切割 3D 体积?
    考虑3D中的闭合表面网格(mesh1),由两个合并块组成,如图所示。两个合并块,具有不同颜色的细分补丁。网格以STL文件形式给出,并被细分分成不同的补丁。每个面片都在STL文件中保存为单独的实体。此外,我有一个由STL文件给出的弯曲2D表面网格(......
  • Python教程(十):面向对象编程(OOP)
    目录专栏列表前言一、面向对象编程概述1.1类和对象1.2继承1.3多态1.4封装二、Python中的类和对象2.1定义类2.2`__init__`函数解释2.3创建对象三、继承3.1基本继承3.2创建子类对象四、多态五、封装六.访问限制七、综合实例结语专栏列表Python教程(一):环......
  • Qt C++ 调用 Python 之 PyObject* 数据类型转换
    整数:PyLong_FromLong和PyLong_AsLong类型检查函数:PyLong_Check()intcppInt=42;//C++整数转换为Python整数对象PyObject*pyInt=PyLong_FromLong(cppInt);//Python整数对象转换为C++整数longcppIntFromPy=PyLong_AsLong(pyInt);Py_DECREF(pyInt)......
  • Python 警告:重试(重试(总计=4,连接=无,读取=无,重定向=无,状态=无))
    我正在尝试pipinstall--upgradepip并保持收到此错误:WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status=None))afterconnectionbrokenby'ProxyError('Cannotconnecttoproxy.',NewConnectionError('<......
  • {Python} 有没有办法从函数中“提取”返回值变量并在其他地方使用它,而不调用原始函数?
    第一次在这里发帖。对python来说相对较新,我正在开发一个程序,它基本上是一个随机故事生成器,用于学习语言、发展技能并添加到我的投资组合中。我有一个主文件(最初启动该程序)、一个简介文件(对于介绍部分,获取用户名以及我试图“提取”user_name变量的位置),一个函数文件,其中包......
  • 为什么我在 Python 中的 Skip-Gram 实现会产生不正确的结果?
    我正在使用Python实现Word2Vec的Skip-Gram模型。然而,正如生成的嵌入及其可视化所示,我的模型似乎无法正常工作。这是嵌入的3D图的示例,它显示单词聚集在一起并重叠,因此很难区分它们:我怀疑问题在于我的实现而不是绘图函数。importnumpyasnpfromnltk.corpusimpor......