簡體   English   中英

Mplstere.net 方位角標簽

[英]Mplstereonet azimuth labels

對於我的論文,我使用 mplstere.net package 到 plot 點和平面的立體投影,這是通過使用 ObsPy package 獲得的。對於我的應用程序,我想在圓外的給定角度使用 plot 的方位角標簽。 我沒有使用軸標簽,因為它們可能與圓心的可能數據點重疊。

set_azimuth_ticks function 的 arguments 是:

  1. 刻度圍繞圓圈的位置(以度為單位)
  2. 蜱的標簽
  3. 刻度與圓的距離。 1為上,0.9為內,1.1為外。

這是我與我的結果一起使用的代碼:我得到了這個結果:

在此處輸入圖像描述

如您所見,標簽離圓圈太遠了。

import mplstereonet
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(111, projection='stereonet')
ax.grid()
ax.set_azimuth_ticks([0],['N'], frac = 0.9)

我注意到 python3.7 環境(將標簽放置在我期望的位置)和 python 3.9 環境之間的行為差異,正如原始海報所觀察到的那樣,它們太遠了。 作為解決方法,我正在使用這個:

import mplstereonet as mpls
fig, ax = mpls.subplots(figsize=[5, 5])
ax.set_azimuth_ticks([])

只是為了去除難看的、離奇遙遠的標簽。

即使在 python3.7 中,我也遇到了與 OP 相同的問題。 如果需要標簽,我的解決方法是使用 ax.text 和 ax.transAxes 轉換為 position 標簽 wrt plot 軸。 刪除錯誤標簽作為先前的答案並添加以下內容:

...
label = np.arange(0,360,45)
labx= 0.5-0.55*np.cos(np.radians(label+90))
laby= 0.5+0.55*np.sin(np.radians(label+90))
for i in range(len(label)):
            ax.text(labx[i],laby[i],str(int(label[i]))+'\N{DEGREE SIGN}', \
                    transform=ax.transAxes, ha='center', va='center')

如果需要額外的靈活性,請使用上面的代碼創建一個 function。 如果您正在繪制顏色條或 plot 標題,則需要適當地填充元素。

我正在運行 python 3.9 並且有同樣的問題,即刻度線距離軸太遠。 我在 github 站點上找到了針對此問題的解決方法:

在調用 plt.show() 之前添加行“ax._polar.set_position(ax.get_position())”

這解決了這個問題。 希望他們盡快在 mpl 中修復代碼

暫無
暫無

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

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