簡體   English   中英

如何將特定的 x 軸(次要)刻度標簽移動到 matplotlib 中圖形的頂部?

[英]How to move specific x-axis (minor) tick labels to the top of a figure in matplotlib?

我想將 matplotlib 自動生成的主要刻度標簽保留在圖下的默認位置。 但是,我自己在特定的 x 值處添加了一些小刻度(帶有垂直線),但它們的標簽不適合默認的主要刻度。 如何將這些標簽移動到圖的頂部?

我的代碼供參考:

meta = comparisons['meta']
lagsAnycast = np.array(meta['lagsAnycast'])
lagsPenultimate = np.array(meta['lagsPenultimate'])
avgLagAnycast = meta['avgLagAnycast']
avgLagPenultimate = meta['avgLagPenultimate']

plt.step(lagsAnycast, (np.arange(lagsAnycast.size) + 1)/lagsAnycast.size,  color='k', label='to anycast IPs', linewidth=1.5)
plt.step(lagsPenultimate, (np.arange(lagsPenultimate.size) + 1)/lagsPenultimate.size,  color='k', label='to penultimate IPs', linewidth=1)
plt.axvline(round(avgLagAnycast,1), ls="dashed", color="k", label="average lag to anycast IPs", linewidth=1.5)
plt.axvline(round(avgLagPenultimate,1), ls="dashed", label="average lag to penultimate IPs", color="k", linewidth=1)

plt.axis([-0.34,60,0.7,1])
plt.xlabel("Lag (ms)")
plt.ylabel("CDF")

existingTicks = (plt.xticks())[0][1:].tolist()
plt.gca().xaxis.grid(True, which='major')
plt.gca().xaxis.grid(False, which='minor')
plt.gca().tick_params(axis="x", which="minor", direction="out", top=True)
plt.gca().set_xticks([round(avgLagAnycast,1), round(avgLagPenultimate,1)], minor=True)

plt.legend(loc='right', fontsize=10)
plt.grid(True, ls="dotted")
majorFormatter = FormatStrFormatter('%g')
plt.gca().xaxis.set_major_formatter(majorFormatter)

plt.savefig(os.path.join(os.getcwd(), "datasets/plots/CDF1.png"))

您可以使用 Locators 和 Formatters 來設置刻度和刻度標簽,並使用tick_params將它們打開或關閉:

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

x = np.linspace(-3,3)
plt.plot(x, np.sin(x))

ticks = [-np.pi/2,np.pi/2.]
labels = [r"$-\frac{\pi}{2}$",r"$\frac{\pi}{2}$"]
ax = plt.gca()
ax.xaxis.set_minor_locator(ticker.FixedLocator(ticks))
ax.xaxis.set_minor_formatter(ticker.FixedFormatter(labels))

# Set visibility of ticks & tick labels
ax.tick_params(axis="x", which="minor", direction="out", 
                      top=True, labeltop=True, bottom=False, labelbottom=False)

plt.show()

在此處輸入圖片說明

暫無
暫無

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

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