簡體   English   中英

mplot3d:輪廓線偏移量,限制和刻度

[英]mplot3d: contourf offset, limits and ticks

我試圖在mplot3d表面下得到一個不錯的輪廓圖。 我希望它出現在3d軸立方體的地板上,與我的數據下限有一點偏移。 現在我正在做這樣的事情:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

N = 50

fig = plt.figure()
ax = fig.gca(projection='3d')

surface = np.zeros((N,N))

# gaussian
for x in np.arange(N, dtype=float):
    for y in np.arange(N, dtype=float):
        sigma = 0.2
        xn = (x - N/2)/N
        yn = (y - N/2)/N
        r = np.sqrt(xn**2.0 + yn**2.0)
        surface[x,y] = np.exp((-r**2.0)/(2.0*sigma**2.0))

# mesh grid NxN points in [0,1]
gx, gy = np.meshgrid(np.linspace(0,1,N),np.linspace(0,1,N))

ax.plot_surface(gx, gy, surface, rstride=2, cstride=2, cmap=mpl.cm.Spectral)

# extend z axis limit to make room for contourf
ax.set_zlim3d(np.min(surface) - 0.5, np.max(surface))

# contour on the floor
levels = np.linspace(np.min(surface), np.max(surface), 20)
ax.contourf(gx, gy, surface, levels=levels,
            offset=(np.min(surface) - 0.5), cmap=mpl.cm.Spectral)

繪制此圖像

看起來不錯,但在我將zaxis擴展到數據最小值以下的位置時增加了幾個刻度。 我不想在最小值以下不顯示任何刻度線,但仍要擴展z軸以抵消輪廓線圖。

任何想法? 如何隱藏或不繪制所有帶有紅色圓圈的刻度線?

它比我想象的要容易,非常感謝@gboffi指出了正確的api。

s_min = np.min(surface)
s_max = np.max(surface)

# filter out extra ticks that exceed data limits
ax.set_zticks(filter(lambda x: s_min <= x <= s_max, ax.get_zticks()))

暫無
暫無

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

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