You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python日期格式转换及Matplotlib绘图无输出无报错问题求解

Fixing Your Matplotlib Plot: No Output & No Error

Let's break down why your plot isn't showing up and fix it step by step:

Key Issues in Your Current Code

  1. No actual plot content: You’re setting tick labels but never drawing any chart (like a line, bar, or scatter plot). Matplotlib has nothing to render when you call plt.show()!
  2. Incorrect plt.xticks usage: The first argument to plt.xticks() should be the position coordinates on your x-axis (e.g., index values, or specific x positions), not just the month numbers. If your x-axis uses dataframe indices or dates instead of 1-12, your tick positions won’t align with the chart’s range.
  3. Redundant date processing: Splitting Date into Year/Month/Day and manually stitching MM_DD_str is unnecessary—Pandas has built-in tools for this.

Corrected Solution

Step 1: Simplify Date Processing

First, clean up how you handle dates to avoid errors and make the code cleaner:

import pandas as pd
import matplotlib.pyplot as plt

# Ensure your Date column is a datetime type first
df['Date'] = pd.to_datetime(df['Date'])

# Extract month and MM-DD string in one line each
df['Month'] = df['Date'].dt.month
df['MM_DD_str'] = df['Date'].dt.strftime('%m-%d')  # More reliable than manual string concatenation

Step 2: Plot Your Data First

You need to draw a chart before setting ticks. For example, if you want to plot a column (like Sales or Value) against months:

# Example: Plot aggregated monthly data (adjust based on your actual data)
monthly_data = df.groupby('Month')['Your_Target_Column'].mean()  # Aggregate by month (mean, sum, etc.)

# Draw the plot
plt.plot(monthly_data.index, monthly_data.values)

Step 3: Set X-Axis Ticks Correctly

Now align your tick positions with the actual x-axis values (here, the month numbers 1-12) and add the month abbreviations:

month_labels = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
plt.xticks(ticks=range(1, 13), labels=month_labels)

Step 4: Add Context & Show the Plot

Finish with labels and a title to make the plot meaningful:

plt.title('Monthly Data Trend')
plt.xlabel('Month')
plt.ylabel('Your Metric Name')
plt.show()

What If You’re Plotting Raw Daily Data?

If you’re plotting daily data instead of aggregated monthly data, you’ll want to set ticks at the first day of each month (or specific positions) instead of using month numbers directly. Here’s a quick example:

# Plot daily data
plt.plot(df['Date'], df['Your_Target_Column'])

# Set ticks to first day of each month, with abbreviated labels
month_ticks = pd.date_range(start=df['Date'].min(), end=df['Date'].max(), freq='MS')
plt.xticks(ticks=month_ticks, labels=month_ticks.strftime('%b'), rotation=45)
plt.show()

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

火山引擎 最新活动