使用ggplot2在R中绘制复数图形

8

有没有一种优雅的方式在ggplot2中绘制复数?plot {graphics}可以对我的snowflake值向量进行绘制,但我更喜欢用ggplot2。我找到的ggplot2教程中没有提到复数这个词。

snowflake <- c(complex(real=0, imaginary=0),
               complex(real=1/3, imaginary=0),
               complex(real=1/2, imaginary=(3^(1/2))/6),
               complex(real=2/3, imaginary=0),
               complex(real=1, imaginary=0))
plot(snowflake, type="l")

图片描述

更新

不幸的是,看起来下面的建议无法解决我更复杂的图形 - plot {graphics}按照给定值向量的顺序将点放置,而qplot 不会。请参见下面的示例:

my.snowflake <- c( 0.0000000+0.0000000i, 0.1111111+0.0000000i,
                   0.1666667+0.0962250i, 0.2222222+0.0000000i,
                   0.3333333+0.0000000i, 0.3888889+0.0962250i,
                   0.3333333+0.1924501i, 0.4444444+0.1924501i,
                   0.5000000+0.2886751i, 0.5555556+0.1924501i,
                   0.6666667+0.1924501i, 0.6111111+0.0962250i,
                   0.6666667+0.0000000i, 0.7777778+0.0000000i,
                   0.8333333+0.0962250i, 0.8888889+0.0000000i,
                   1.0000000+0.0000000i)

结果:

plot(my.snowflake, type = "l")

enter image description here

qplot(Re(my.snowflake), Im(my.snowflake), geom="line")

enter image description here

1个回答

10

使用ReIm提取数字的实部和虚部,然后将它们作为x和y传递给ggplot2:

qplot(Re(snowflake), Im(snowflake), geom="path")

作者在ggplot2中的绘图

在您的更新中,您指出geom_line不能处理一个非平凡案例,因此您需要改用geom_path,它按提供的顺序连接点。这是您更复杂的示例,使用geom_path

作者在ggplot2中使用geom_path更新的绘图


Peyton,谢谢你的建议!不幸的是,它在我的更复杂的例子中效果不佳 - 请参见帖子更新。 - Marta Karas
1
你说得对,geom_line 看起来不是一个好的替代品。我已经更新了我的示例,使用了评论中baptiste建议的 geom_pathgeom_path 将按照提供的顺序连接点。 - Peyton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接