ggplot2在一幅图上画两条曲线

本文介绍如何使用ggplot2在一幅图上绘制两条不同颜色的曲线,详细展示了通过添加不同图层来实现多条曲线在同一图表上的显示,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ggplot2在一幅图上画两条曲线


print(data)后的结果是

C     BROWN.P   MI.P
0     0.9216 0.9282
30    0.9240 0.9282
100   0.9255 0.9282

现想要在一张图中画两条曲线。横轴为C,纵轴分别为BROWN.P和MI.P,如何做?

其实很简单

p1<-ggplot(brown.results, aes(x=C)) + 
            geom_point(aes(y=BROWN.P), ) + 
            geom_line(aes(y=BROWN.P, , color="cyan")) +
            geom_point(aes(y=MI.P)) + 
            geom_line(aes(y=MI.P, color="red"))
### 时间轴相关性计算与实现方法 时间轴上的相关性通常指的是两个或多个随时间变化的变量之间存在的某种依赖关系。这种依赖关系可以通过多种方式量化,具体取决于数据的特点以及研究目标。 #### 1. 基于皮尔逊相关系数的时间序列相关性分析 对于平稳的时间序列数据,可以使用皮尔逊相关系数来评估它们之间的线性相关程度。该指标适用于连续型数值变量,并假设两者具有线性关系[^1]。 其定义如下: \[ \rho_{X,Y} = \frac{\text{Cov}(X, Y)}{\sigma_X \cdot \sigma_Y} \] 其中 \( \text{Cov}(X, Y) \) 表示协方差,\( \sigma_X \) 和 \( \sigma_Y \) 分别表示 X 和 Y 的标准差。如果得到的结果接近 ±1,则说明存在较强的线性相关;而接近 0 则表明几乎没有线性相关[^2]。 #### 2. 使用互相关函数 (Cross-Correlation Function) 当关注的是不同滞后阶数下两条时间序列间的相互影响时,可采用 **互相关函数** 来描述这一特性。它能够揭示一条序列的变化是否会对另一条序列造成延迟效应。在 Python 中可通过 `numpy.correlate` 或者 `pandas.Series.corr()` 函数轻松完成操作[^3]: ```python import numpy as np from matplotlib import pyplot as plt def cross_correlation(x, y, max_lag=10): result = [] for lag in range(-max_lag, max_lag + 1): if lag >= 0: corr_value = np.corrcoef(y[lag:], x[:len(y)-lag])[0][1] else: corr_value = np.corrcoef(y[:len(y)+lag], x[-lag:])[0][1] result.append((lag, corr_value)) return result # Example usage with synthetic data np.random.seed(42) time_series_x = np.sin(np.linspace(0, 10, 100)) + np.random.normal(scale=0.1, size=100) time_series_y = np.cos(np.linspace(0, 10, 100)) lags_and_corr_values = cross_correlation(time_series_x, time_series_y) plt.stem([item[0] for item in lags_and_corr_values], [abs(item[1]) for item in lags_and_corr_values]) plt.xlabel('Lag') plt.ylabel('Correlation Coefficient Magnitude') plt.title('Cross Correlation Between Two Time Series') plt.show() ``` 上述代码片段展示了如何手动构建并绘制交叉相关谱,从而直观判断最佳匹配位置对应的相位差值。 #### 3. 动态时间规整算法(DTW) 针对非同步采样或者长度不同的时间序列比较场景,动态时间弯曲技术是一种非常有效的方式。DTW 不仅考虑了原始样本点本身的价值差异,还会综合考量路径规划过程中产生的累积成本开销,最终找到全局最优解轨迹[^7]。以下是简单应用实例演示: ```python from fastdtw import fastdtw from scipy.spatial.distance import euclidean import numpy as np sequence_a = np.array([[i * i / 1e4] for i in range(100)]) sequence_b = sequence_a.copy() + np.random.uniform(low=-0.05, high=0.05, size=(100, 1)) distance, path = fastdtw(sequence_a, sequence_b, dist=euclidean) print(f"The DTW distance between sequences is {distance:.4f}.") for match_pair in path[:5]: print(match_pair) ``` 此部分实现了基于 FastDTW 库版本的距离测量功能,同时返回最短配对链路明细记录以便进一步验证准确性[^7]。 --- ### 可视化工具支持 为了更清晰地呈现这些复杂的多维空间结构特征,在实际项目开发阶段往往还需要借助专业的表渲染引擎辅助表达含义。例如 R 语言 ggplot2 生态圈下的扩展组件——ggpubr 提供了一个便捷接口用于定制个性化散点分布趋势展示效果。下面给出一段典型配置模板作为参考指南: ```R library(ggpubr) data <- mtcars[, c("mpg", "wt")] ggscatter(data, x = "wt", y = "mpg", add = "reg.line", # 添加回归直线拟合曲线 conf.int = TRUE, # 显示置信区间范围边界框 cor.coef = TRUE, # 自动标注相关系数统计量 cor.method = "pearson") %>% # 设置具体的检验模式选项参数 theme_minimal() # 调用简约风格主题样式美化整体外观布局设计 ``` 以上脚本会生成一幅带有显著标记注释信息的标准 XY 平面投影像文件输出结果。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值