MatPlotlib-Farbbalken mit falschem Bereich in der 3D-OberflächePython

Python-Programme
Guest
 MatPlotlib-Farbbalken mit falschem Bereich in der 3D-Oberfläche

Post by Guest »

Ich versuche, mithilfe von Oberflächenplot und Flächenfarben in Matplotlib einen Wert um die Einheitskugel herum darzustellen, aber meine Farbleiste zeigt die normalisierten Werte anstelle der tatsächlichen Werte an. Wie kann ich das beheben, damit die Farbleiste den richtigen Bereich hat?

Code: Select all

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib import cm

fig, ax = plt.subplots(subplot_kw={"projection": "3d"}, figsize = (10, 14))

# Make data
n_points = 500
r = 1
u = np.linspace(0, 2 * np.pi, n_points)
v = np.linspace(0, np.pi, n_points)
x = r * np.outer(np.cos(u), np.sin(v))
y = r * np.outer(np.sin(u), np.sin(v))
z = r * np.outer(np.ones(np.size(u)), np.cos(v))

ax.plot_wireframe(x, y, z, color="grey", alpha = 0.1)

data = np.random.uniform(0.2, 0.5, n_points)
heatmap = np.array(np.meshgrid(data, data))[1]

ax.set_aspect("equal")

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

colormap = cm.viridis
normaliser = mpl.colors.Normalize(vmin=np.min(heatmap), vmax=np.max(heatmap))

print(np.min(heatmap))
print(np.max(heatmap))

surf = ax.plot_surface(
x, y, z,
facecolors=colormap(normaliser(heatmap)), shade=False)

fig.colorbar(surf, shrink=0.5, aspect=10, label="Singlet yield", pad = 0.05, norm = normaliser)

plt.show()

Dies gibt 0,20009725794516225 und 0,49936395079063567 als Min. und Max. in den Drucken aus, aber Sie können sehen, dass der Bereich der Farbleiste im folgenden Bild 0 bis 1 beträgt.
Image

Wie kann ich dieses Problem beheben und dafür sorgen, dass die Farbleiste die richtigen Farben hat?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post