R新手求助:自动选刻度报错及月温度距平绘图异常问题
Hey there! Let's break down your two issues step by step—since you're new to R, I'll keep this straightforward and actionable.
1. Fixing the Error with Monthly Temperature Anomaly Plots
Since your monthly average ("mavg") plots work fine, the issue is almost certainly tied to how you're calculating or passing the anomaly data to your plotting function. Here are the most common fixes to try:
- Check for missing values (NA) in your anomaly data: Anomalies are typically calculated as
anomaly <- temp_data - mavg_data. If either dataset has missing values, this will create NA entries that many plotting functions struggle with. Runsum(is.na(anomaly))to check for NAs—if you find any, clean them up withna.omit(anomaly)(removes rows with NAs) or use thezoopackage'sna.fill()to fill gaps with a reasonable value (like linear interpolation). - Verify your plotting function's data structure: Maybe you're using a function that expects a specific format for mavg data but not for anomalies. For example, if you're using
ggplot2, double-check that your aesthetic mapping (e.g.,y = anomaly) correctly references a column in your data frame. If you're using base R plots, confirm your anomaly vector is the exact same length as your x-axis (dates) vector—mismatched lengths will throw an error every time. - Check for data type mismatches: If your mavg data is stored as a factor but your anomaly is numeric, this can cause unexpected errors. Use
class(anomaly)to confirm it's a numeric type—if not, convert it withas.numeric(anomaly).
2. Fixing Automatic Axis Tick Issues
R's automatic tick selection can be hit-or-miss, especially with date axes or anomaly data that has a narrow/wide range. Here's how to take full control:
For Date X-Axes (Super Common for Monthly Data)
- Base R: Skip the automatic axis and build it manually with
axis.Date():# Plot your data without default axes plot(dates, anomaly, axes = FALSE, type = "l", xlab = "Date", ylab = "Temperature Anomaly") # Add custom x-axis ticks (e.g., every 6 months) axis.Date(side = 1, at = seq(min(dates), max(dates), by = "6 months"), format = "%Y-%m") # Add y-axis (customize ticks here too if needed) axis(side = 2) # Add the plot box back box() - ggplot2: Use
scale_x_date()to define exactly where ticks should go:library(ggplot2) ggplot(data = your_data_frame, aes(x = date_column, y = anomaly_column)) + geom_line(color = "steelblue") + scale_x_date(breaks = "6 months", date_labels = "%Y-%m") + labs(x = "Date", y = "Temperature Anomaly (°C)")
For Y-Axes (Anomaly Values)
If the automatic y-ticks are too sparse, too dense, or don't align with your data's range, set them manually:
- Base R: Use
ylim()to set the overall range, thenaxis()to define tick positions:plot(dates, anomaly, type = "l", ylim = c(-4, 4)) axis(side = 2, at = seq(-4, 4, by = 1)) # Ticks every 1 degree - ggplot2: Use
scale_y_continuous()to customize breaks and limits:ggplot(data = your_data_frame, aes(x = date_column, y = anomaly_column)) + geom_line(color = "steelblue") + scale_y_continuous(breaks = seq(-4, 4, 1), limits = c(-4, 4)) + labs(x = "Date", y = "Temperature Anomaly (°C)")
If you try these fixes and still run into issues, feel free to share a snippet of your code and the exact error message—this will help narrow things down even more!
内容的提问来源于stack exchange,提问作者Satha Monjung

