簡體   English   中英

如何使用正確的 X-ticks 將 (x,y) 圖疊加到 Python 中的箱線圖上?

[英]How Do I Overlay a (x,y) Plot onto a Boxplot in Python with Correct X-ticks?

我正在嘗試將箱線圖與線圖結合起來。 我能夠讓兩種不同的繪圖類型一起出現在同一個圖形上,並使箱線圖位於正確的 x 位置。 但是,我想調整 x 刻度,以便以固定間隔跨越整個 x 軸。 我沒有任何運氣使用 xlim 和 xticks 來更改刻度位置 - 我認為箱線圖在那里搞砸了。 我試過分別疊加圖,但我仍然沒有任何運氣。 下面你可以看到我試圖實現的代碼來覆蓋兩個圖。

h = [0.39, 0.48, 0.58, 0.66, 0.78, 0.94]
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(h, avg00, '--ko', label='GSE')
ax2.boxplot(phi00, widths=0.05, positions=h, showmeans=True)
ax1.set_xticks(np.arange(0.3, 1.1, 0.1))
ax1.set_xlim(0.3,1.0)
ax1.set_ylim(74,79)
ax2.set_ylim(74,79)
ax2.set_yticks([])
ax1.legend()
plt.show()

使用手頭的數據,創建以下圖像:疊加的 xy-plot 和 boxplot

任何幫助將不勝感激。 謝謝!!!!

默認情況下,箱線圖會更改刻度位置以及標簽及其格式。 您可以通過參數manage_ticks=False來抑制這一點。

或者,您還可以顯式設置locator 和 formatter ,例如MultipleLocatorScalarFormatter 請注意,在這種情況下, twinx()軸不會增加任何值,只會使問題復雜化。

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, ScalarFormatter
import numpy as np

phi00 = np.random.normal(76.5, 0.7, (20, 6))
avg00 = phi00.mean(axis=0)
h = [0.39, 0.48, 0.58, 0.66, 0.78, 0.94]
fig, ax1 = plt.subplots()
ax1.plot(h, avg00, '--ko', label='GSE')
ax1.boxplot(phi00, widths=0.05, positions=h, showmeans=True, manage_ticks=False)
# ax1.xaxis.set_major_locator(MultipleLocator(0.1))
# ax1.xaxis.set_major_formatter(ScalarFormatter())
ax1.set_xlim(0.3, 1.0)
ax1.set_ylim(74, 79)
ax1.legend()
plt.show()

示例圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM