【问题标题】:Measure width of grid in yaxis units in matplotlib在 matplotlib 中以 y 轴为单位测量网格的宽度
【发布时间】:2021-09-20 12:51:13
【问题描述】:

有什么方法可以根据 y 轴上使用的单位来测量网格线的宽度吗?

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl

t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)

fig, ax = plt.subplots(constrained_layout=True)

ax.yaxis.set_tick_params(which='minor', width=5)
ax.plot(t, s)
ax.yaxis.set_major_locator(mpl.ticker.MultipleLocator(0.50))
ax.yaxis.set_minor_locator(mpl.ticker.MultipleLocator(0.25))
ax.grid(linewidth=5, axis='y', which='both')
ax.set_ylim(0, 2.25)

plt.show()

【问题讨论】:

标签: python matplotlib figure measure


【解决方案1】:

感谢Trenton McKinney,这是我解决问题的方法。我不得不更改设置线宽的行,以便它使用变量lw,因为我无法弄清楚如何从ax 对象中获取线宽。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl

t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)

fig, ax = plt.subplots(constrained_layout=True)

ax.yaxis.set_tick_params(which='minor', width=5)
ax.plot(t, s)
ax.yaxis.set_major_locator(mpl.ticker.MultipleLocator(0.50))
ax.yaxis.set_minor_locator(mpl.ticker.MultipleLocator(0.25))
# ax.grid(linewidth=5, axis='y', which='both')
lw = 5
ax.grid(linewidth=lw, axis='y', which='both')
ax.set_ylim(0, 2.25)

def get_DaUPP(fig, ax):
    # Points per inch
    PPI = 72

    # Display units per inch
    figsizeDispUnits = np.diff(fig.transFigure.transform([(0, 0), (1, 1)]), 1, 0)

    DiUPI = np.divide(figsizeDispUnits, fig.get_size_inches())

    # Display units per data unit
    axDispUnits = np.diff(ax.transData.transform([(ax.get_xlim()[0], ax.get_ylim()[0]), (ax.get_xlim()[1], ax.get_xlim()[1])]), 1, 0)
    axDataUnits = np.diff([(ax.get_xlim()[0], ax.get_ylim()[0]), (ax.get_xlim()[1], ax.get_xlim()[1])], 1, 0)
    DiUPDaU = np.divide(axDispUnits, axDataUnits)

    # Data units per inch
    DaUPI = np.divide(DiUPI, DiUPDaU)

    # Data unit per point
    DaUPP = DaUPI / PPI

    return DaUPP.flatten()

# Width of grid in yaxis units
lw * get_DaUPP(fig, ax)[1]

【讨论】:

    猜你喜欢
    • 2017-10-23
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多