You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以DataFrame中Position列的x_y格式字符串为坐标绘制Heatmap?

Creating a Heatmap from Position (x_y) Coordinates and Value Intensity

Here's a practical, step-by-step guide to turn your Position-Value dataframe into a heatmap using Python with pandas and seaborn:

1. Import Required Libraries

First, make sure you have these packages installed, then import them:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

2. Create/Load Your DataFrame

Let’s start with your sample data:

# Sample input data
data = {
    'Position': ['1_5', '1_6', '1_7', '2_5', '2_6', '2_7'],
    'Value': [1, -1, 0.5, 6, -3, -5]
}
df = pd.DataFrame(data)

3. Split Position into X and Y Coordinates

We’ll break the Position column (formatted as x_y) into separate x and y columns, then convert them to integers for proper grid indexing:

# Split the Position string into x and y columns
df[['x', 'y']] = df['Position'].str.split('_', expand=True)
# Convert to integer type (since coordinates are numeric)
df['x'] = df['x'].astype(int)
df['y'] = df['y'].astype(int)

4. Reshape into a Grid (Intermediate Format)

Next, pivot the dataframe to get the grid structure you mentioned, where rows represent y-values and columns represent x-values:

# Pivot to create the heatmap-ready grid
heatmap_grid = df.pivot(index='y', columns='x', values='Value')

This will produce your desired intermediate dataframe:

x    1    2
y          
5  1.0  6.0
6 -1.0 -3.0
7  0.5 -5.0

5. Plot the Heatmap

Finally, use seaborn’s heatmap function to visualize the data. We’ll add annotations, labels, and a color scale for clarity:

# Set up the plot figure
plt.figure(figsize=(8, 6))

# Generate the heatmap
sns.heatmap(
    heatmap_grid,
    annot=True,        # Show the actual Value numbers in cells
    cmap='coolwarm',   # Color scale for positive/negative values
    fmt='g',           # Avoid scientific notation for numbers
    cbar=True,         # Include a color intensity bar
    linewidths=0.5     # Add thin lines between cells for readability
)

# Add plot labels and title
plt.xlabel('X Coordinate')
plt.ylabel('Y Coordinate')
plt.title('Heatmap of Value Intensity by Position')

# Display the plot
plt.show()

Quick Tips:

  • If you have missing positions (gaps in your x/y grid), use pd.pivot_table instead of pd.pivot and add fill_value=0 (or another placeholder) to fill empty cells.
  • Swap cmap='coolwarm' with other colormaps like viridis, magma, or RdBu to match your preferred color scheme.

内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 10:07:44