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

如何为含复数的R数据框绘制保留虚部的散点图?

R语言绘制含复数2×2数据框散点图的实现方法

使用R语言绘制数据框散点图时,若单元格包含复数,默认plot函数会丢弃虚部,无法满足复数场景的可视化需求。

无复数场景常规实现

无复数的普通数值场景可直接使用如下代码绘制散点图:

noc_test <- data.frame("x" = c(0, 1),
                       "y" = c(1, 0))
plot(x = noc_test[[1]], y = noc_test[[2]])

含复数场景的绘图需求

针对如下包含复数的2×2数据框,直接调用plot函数会丢失虚部信息:

c_test <- data.frame("x" = c(0, sqrt(-1+0i)),
                     "y" = c(-sqrt(-1+0i), 0))

# 以下代码绘制的散点图会自动丢弃虚部
plot(x = c_test[[1]], y = c_test[[2]])

该需求来自实验项目,需要通用绘图方法适配2×2全复数数据框,可快速绘制2×2单位矩阵、3个泡利矩阵(已转R数据框格式)及其任意变换,用于验证变换对泡利矩阵的作用效果。

临时可用实现方案

目前可通过判断复数存在性、拆分实部虚部的方式实现需求,代码如下:

# 创建包含复数单元格的数据框
x <- data.frame("x" = c(0, sqrt(-1+0i)),
                     "y" = c(-sqrt(-1+0i), 0))

# 判断是否存在非零虚部,分场景绘图
if (Im(x[[1]][[1]]) != 0 || Im(x[[2]][[1]]) != 0 || 
    Im(x[[1]][[2]]) != 0 || Im(x[[2]][[2]]) != 0){
  x <- data.frame(Re = c(Re(x[[1]][[1]]), Re(x[[2]][[1]]),
                              Re(x[[1]][[2]]), Re(x[[2]][[2]])),
                       Img = c(Im(x[[1]][[1]]), Im(x[[2]][[1]]),
                               Im(x[[1]][[2]]), Im(x[[2]][[2]])))
  
  plot(x = x[[1]], y = x[[2]], xlab = "实部", ylab = "虚部", 
       main = "sig2", col = c("red", "red", "blue", "blue"), 
       pch = c(1, 1, 4, 4))
} else {
  plot(x = x[[1]], y = x[[2]], xlab = "x2", ylab = "y2", 
       main = "sig2")
}

该方案当前可满足泡利矩阵变换的可视化需求,后续将优化为更通用的正式实现。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:06:08