Python 中带有箱线图的连续 x 轴刻度

问题描述 投票:0回答:1

我正在使用箱线图绘制一些分布。然后,我找到每个分布的中值,用二阶多项式拟合它们,并在某个 x 轴值处进行预测。我绘制了拟合值和预测值。我想让 x 轴显示等距的刻度,就像绘制简单线条时自动显示的那样,但它只显示与箱线图相对应的 x 轴值。如何重新格式化 x 轴以显示连续值?

我使用虚拟数据创建了代码的简化版本来重现该问题:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

# Dummy x-axis values
variable = [1.6, 1.8, 2.0, 2.2, 2.5]
# Dummy data
dummy1 = np.random.rand(10, len(variable))
# Plot dummy data as box plots
ax.boxplot(dummy1, positions=variable, notch=True, patch_artist=True)
# Fit data with a quadratic polynomial
fit = np.polyfit(variable, np.nanmedian(dummy1, axis=0), 2)
# More dummy data
dummy2 = np.random.rand(10, 1)
# Make a prediction
prediction = fit[0] * dummy2 ** 2 + fit[1] * dummy2 + fit[2]
# Plot the prediction median as a star
ax.plot(np.nanmedian(dummy2), np.nanmedian(prediction), '*')
# Get the lowest x-axis value
minim_x = min(variable[0], np.nanmedian(dummy2))
# Fine-grain values for the fit plot
x = np.linspace(minim_x, variable[-1], 1000)
y = fit[0] * x ** 2 + fit[1] * x + fit[2]
# Plot the fit
ax.plot(x, y, '--')
ax.grid(True)
plt.show()

python matplotlib boxplot x-axis
1个回答
0
投票

我添加了一些刻度格式化代码,执行以下操作:重置刻度,使它们每隔 0.25 定位一次(箱形图不规则地放置它们),然后重置刻度格式化程序,以便显示所有刻度标签(箱形图隐藏一些刻度)。

<your existing plotting code>
.
.
.
from matplotlib import ticker

#Set x tick locations to span x axis, with step=0.25
ax.xaxis.set_major_locator(ticker.MultipleLocator(0.25))

#Apply default tick formatting so the tick labels all show
ax.xaxis.set_major_formatter(ticker.ScalarFormatter())

#Optionally rotate the ticks
ax.set_xticklabels(ax.get_xticklabels(), rotation=45)

plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.