gpt4 book ai didi

python - x 轴上的刻度标签不对称 (Matplotlib)

转载 作者:行者123 更新时间:2023-11-30 23:30:33 29 4
gpt4 key购买 nike

我正在尝试绘制具有(名义上)对称 x 值范围(例如 2 -> 0 -> -2 -> 0 -> 2)的磁滞回线。

但是,由于磁铁电源的细微变化,有时起始值和最终值并不完全是 +/- 2,而可能是 -2.01。这意味着我生成的图没有对称的 x 轴。它可能会从 -2.5 变为 2。

有没有办法强制轴以 0 为中心对称?我尝试过 matplotlib.ticker.MaxNLocator(symmetry=True) 但它似乎不起作用。

以下是我的意思的示例:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
import os, re, glob, io

fig = plt.figure()
axes = fig.add_subplot(111)

matplotlib.ticker.MaxNLocator(symmetric=True)

upsrt = pd.DataFrame({'DAC3' : pd.Series([-2.1, -1., 0., 1., 2.]),
'norm' : pd.Series([5., 3., 6., 8., 2.])})

downsrt = pd.DataFrame({'DAC3' : pd.Series([-2., -1., 0., 1., 2.]),
'norm' : pd.Series([3., 7., 3., 6., 7.])})

upsrt.plot(x='DAC3', y='norm', color='red', label='Up')

downsrt.plot(x='DAC3', y='norm', color='blue', label='Down')

plt.show()

请注意,两个 DAC3 系列不同,最低值为 -2 和 -2.1,这就是导致问题的原因。

此外,我无法强制轴从 -2.5 变为 2,因为我在循环中绘制大量图形,并且每个图形都有不同的范围。

干杯。

最佳答案

设置特定axes对象的定位器,然后将这些axes作为参数提供给DataFrame.plot():

from matplotlib.ticker import MaxNLocator

fig = plt.figure()
axes = fig.add_subplot(111)
axes.xaxis.set_major_locator(MaxNLocator(symmetric=True))

upsrt = pd.DataFrame({'DAC3' : pd.Series([-2.1, -1., 0., 1., 2.]),
'norm' : pd.Series([5., 3., 6., 8., 2.])})

downsrt = pd.DataFrame({'DAC3' : pd.Series([-2., -1., 0., 1., 2.]),
'norm' : pd.Series([3., 7., 3., 6., 7.])})

upsrt.plot(x='DAC3', y='norm', color='red', label='Up',ax=axes)

downsrt.plot(x='DAC3', y='norm', color='blue', label='Down', ax=axes)

plt.show()

关于python - x 轴上的刻度标签不对称 (Matplotlib),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20519241/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com