Я работаю с Matplotlib, чтобы создать визуализацию высоты с использованием Procolormesh, но я сталкиваюсь с проблемой, в которой края сетки сетки видны в выходном изображении, несмотря на установку edgecolors = 'none'. Это приводит к нежелательному каркасному внешнему виду на графике рядом с краем цветового партия. Я пытаюсь достичь гладкой, непрерывной визуализации поверхности.
Image < /p>
Несмотря на установку edgecolors = 'none' и тестирование с Rasterized = true, каркас по -прежнему появляется на сохраненной рисунке. Я также попытался увеличить разрешение и настройку Colormap. Когда я устанавливаю цветную карту на 50% непрозрачности, я вижу, что сетка проходит через мою коллеги. Как на этом рисунке показывает (с viridis и alpha = 0,5) изображение < /p>
Как я могу удалить или скрыть эти сетчатые ребра для достижения полностью плавной поверхности? /> Вот упрощенная версия моего кода, которая показывает тот же артефакт, если вы приближаетесь к краю: < /p>
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
from scipy.interpolate import griddata
from os.path import join
# Sample data for demonstration
x = np.random.rand(1000)
y = np.random.rand(1000) * 100 # Y values scaled to simulate height data
z = np.random.rand(1000)
# Convert data to NumPy arrays
x_np = np.array(x)
y_np = np.array(y)
z_np = np.array(z)
# Define grid resolution
heightmap_resolution = (512, 512)
# Create a grid
grid_x, grid_z = np.meshgrid(np.linspace(np.min(x_np), np.max(x_np), heightmap_resolution[0]),
np.linspace(np.min(z_np), np.max(z_np), heightmap_resolution[1]))
# Interpolate Y values on the grid
points = np.column_stack((x_np, z_np))
grid_y = griddata(points, y_np, (grid_x, grid_z), method='cubic')
# Plot setup
fig_width, fig_height = 210 / 25.4, 297 / 25.4 # Dimensions in inches
dpi = 1440 # High DPI for detailed output
fig = plt.figure(figsize=(fig_width, fig_height), dpi=dpi)
ax = fig.add_axes([0, 0, 1, 1]) # Use full area of the figure
cmap = LinearSegmentedColormap.from_list('mycmap', ['white', 'black'])
c = ax.pcolormesh(grid_x, grid_z, grid_y, cmap=cmap, shading='gouraud', edgecolors='none', rasterized=True)
ax.axis('off') # Turn off the axis
# Save the figure
output_dir = r"C:\test" #CHANGE THIS PATH
heightmap_name = 'out_plot_height_map.png'
plt.savefig(join(output_dir, heightmap_name), format='png', dpi=dpi, bbox_inches='tight', pad_inches=0)
plt.close(fig)
< /code>
Я попробовал этот код, но этот «пикселат» вывод. Мне нужен градиент, который поставляется с Shading = 'guraud', так как эта высота будет использоваться на стадии производства, и шаги образуют пиксели, которые не являются jo < /p>
fig, ax = plt.subplots(figsize=(fig_width, fig_height), dpi=dpi)
im = ax.imshow(grid_y, extent=[np.min(x_np), np.max(x_np), np.min(z_np), np.max(z_np)], interpolation='bicubic', cmap='viridis', aspect='auto')
ax.axis('off')
plt.savefig(join(output_dir, heightmap_name), format='png', dpi=dpi, bbox_inches='tight', pad_inches=0)
plt.close(fig)
Подробнее здесь: https://stackoverflow.com/questions/785 ... rmesh-plot
Как устранить видимые края на графике Matplotlib Procolormesh? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение