Я не могу заставить matplotlib построить трехмерную карту поверхности с сеткой более 50x50 [дубликат]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Я не могу заставить matplotlib построить трехмерную карту поверхности с сеткой более 50x50 [дубликат]

Сообщение Anonymous »

Я использовал приведенный ниже сценарий и не смог выйти за пределы 49-й строки моих данных. Я пытался увеличить значение оси Z во многих местах и ​​заметил, что оно не появится на сопоставленном рисунке, если оно не будет находиться в пределах первых 49 значений (x,y,z).
Будем очень признательны за любые рекомендации.

Код: Выделить всё

import pandas as pd
import matplotlib.pyplot as plt
from google.colab import files
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import numpy as np
from scipy.interpolate import griddata
import io

# Upload the Excel file
uploaded = files.upload()

# Get the file name
file_name = list(uploaded.keys())[0]

# Read the Excel file with all sheets into a dictionary of DataFrames
xls = pd.ExcelFile(io.BytesIO(uploaded[file_name]))
sheet_names = xls.sheet_names
dataframes = {sheet_name: pd.read_excel(xls, sheet_name=sheet_name) for sheet_name in sheet_names}

# Specify the columns to plot
x_column = 'Col_1'
y_column = 'Col_2'
z_column = 'z_values'

# Find the min and max Z values across all sheets
min_z = float('inf')
max_z = float('-inf')
for sheet_name in sheet_names:
df = dataframes[sheet_name]
if z_column in df.columns:
min_z = min(min_z, df[z_column].min())
max_z = max(max_z, df[z_column].max())

# Find the min and max values for the colormap across all sheets
min_value = float('inf')
max_value = float('-inf')
for sheet_name in sheet_names:
df = dataframes[sheet_name]
if z_column in df.columns:  # Assuming z_column determines color
min_value = min(min_value, df[z_column].min())
max_value = max(max_value, df[z_column].max())

# Create a figure and subplots for each sheet
fig = plt.figure(figsize=(15, 10))
num_sheets = len(sheet_names)
num_rows = (num_sheets + 2) // 3
num_cols = min(num_sheets, 3)

for i, sheet_name in enumerate(sheet_names):
df = dataframes[sheet_name]
if x_column not in df.columns or y_column not in df.columns or z_column not in df.columns:
print(f"Error: Columns '{x_column}', '{y_column}', or '{z_column}' not found in sheet '{sheet_name}'. Skipping.")
continue

ax = fig.add_subplot(num_rows, num_cols, i + 1, projection='3d')
xi = np.linspace(min(df[x_column]), max(df[x_column]), 100)
yi = np.linspace(min(df[y_column]), max(df[y_column]), 100)
X, Y = np.meshgrid(xi, yi)
Z = griddata((df[x_column], df[y_column]), df[z_column], (X, Y), method='cubic')

surf = ax.plot_surface(X, Y, Z, cmap=cm.viridis, linewidth=0, antialiased=False, vmin=min_value, vmax=max_value)
#surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap='viridis') to prevent downsampling

ax.set_xlabel(x_column)
ax.set_ylabel(y_column)
ax.set_zlabel(z_column)
ax.set_title(f'Sheet: {sheet_name}')
ax.set_zlim(min_z, max_z)

# Add a single colorbar for all plots
fig.subplots_adjust(right=0.8)
cbar_ax = fig.add_axes([0.85, 0.15, 0.05, 0.7])
fig.colorbar(surf, cax=cbar_ax)

plt.show()

Я попробовал несколько вещей, чтобы избежать понижения разрешения, ничего не помогло, и на самом деле это не проблема с разрешением, это проблема с исключением данных, ничего, кроме строки 49, не отображается. Я чувствую, что это какой-то предел модуля, который я использую, но не могу найти нигде, чтобы это настроить. Я пробовал использовать rcount и ccount = 1 и тому подобные, но они, похоже, не помогли. Кадр данных правильный и включает в себя весь мой набор данных из 200 строк, но опять же, трехмерная поверхность не может выходить за пределы сетки 49x49... по крайней мере, так кажется.

Подробнее здесь: https://stackoverflow.com/questions/793 ... 50x50-grid
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Я не могу заставить matplotlib построить трехмерную карту поверхности с сеткой более 50x50 [дубликат]
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Перевод координат широты и долготы в трехмерную точку на поверхности сферы, проблема вблизи полюсов.
    Anonymous » » в форуме C#
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Как написать трехмерную карту в файл?
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как написать трехмерную карту в файл?
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • ViewModel и использование контекста для получения списка ресурсов локализованных строк размером 50x50?
    Anonymous » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»