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

如何用Python绘制二维数组折线图及指定分段折线图?

Hey there! Let's break down your two Python plotting requests step by step. We'll use matplotlib—the go-to library for this kind of visualization—since it's flexible and easy to work with.

1. Plotting a 2D Array as a Line Chart

For a 2D array, each row (or column) typically represents a separate line series. Here's a straightforward implementation using matplotlib and numpy (though you can use regular Python lists too):

import matplotlib.pyplot as plt
import numpy as np

# Example 2D array: each row is a line's y-values; x-axis defaults to 0,1,2,...
two_d_array = np.array([
    [1, 3, 2, 5, 4],
    [2, 4, 1, 6, 3],
    [5, 3, 4, 2, 1]
])

# Plot each row as a separate line
for line_idx, y_values in enumerate(two_d_array):
    plt.plot(y_values, label=f'Series {line_idx + 1}')

# Add labels and formatting
plt.title('2D Array Line Chart')
plt.xlabel('X Index')
plt.ylabel('Y Value')
plt.legend()  # Shows which line corresponds to which series
plt.grid(True)  # Adds a grid for readability

# Display the chart
plt.show()

Quick Notes:

  • If your 2D array uses columns as series instead of rows, just transpose it with two_d_array.T before plotting.
  • For regular Python lists (no numpy), the logic is identical—loop through each sublist and plot it.
2. Creating a Segmented Line Chart from Your Custom Data

Your second request is to plot a segmented line where each value maps to a specific x-range. Let's translate your requirements into code:

  • Value 1 → x from 0 to 5
  • Value 2 → x from 5 to 9 (since 5 + 4 = 9, using the second number in each tuple)
  • Value 3 → x from 9 to 14 (9 + 5 = 14)

Here's how to implement this:

import matplotlib.pyplot as plt

# Your original data list
data_segments = [(1, 5), (2, 4), (3, 5)]

# Calculate the start and end x-values for each segment
x_start = 0
segment_details = []
for y_val, x_span in data_segments:
    x_end = x_start + x_span
    segment_details.append((y_val, x_start, x_end))
    x_start = x_end  # Update start for the next segment

# Build coordinates for the line plot (ensures continuous segments)
x_coords = []
y_coords = []
for val, s, e in segment_details:
    x_coords.extend([s, e])  # Add start and end of the x-range
    y_coords.extend([val, val])  # Keep y-value constant for the segment

# Plot the segmented line
plt.plot(x_coords, y_coords, marker='o', linestyle='-', color='darkblue', linewidth=2)

# Optional: Add labels for each segment to make it clearer
for val, s, e in segment_details:
    mid_x = (s + e) / 2
    plt.text(mid_x, val + 0.1, f'Y = {val}', ha='center', fontweight='bold')

# Format the chart
plt.title('Custom Segmented Line Chart')
plt.xlabel('X Axis')
plt.ylabel('Y Value')
plt.xlim(-0.5, 14.5)  # Slight padding on x-axis
plt.ylim(0.5, 3.5)    # Slight padding on y-axis
plt.grid(True)

plt.show()

How It Works:

  1. We first calculate the exact x-range for each value using the span numbers in your tuples.
  2. We build coordinate lists that connect each segment end-to-end, so the line stays continuous.
  3. The marker='o' adds dots at each segment start/end, making the boundaries clear.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:03:49