标签: polar-coordinates

在R中绘制一颗心

可能重复:
方程驱动的平滑阴影同心形状

我怎么能在R中绘制一个对称的心脏,就像我绘制一个圆圈(使用plotrix)或一个矩​​形?

我想要这样的代码,这样我才能真正为自己做这件事,并能够将其推广到类似的未来需求.我已经看到了比这更精细的情节所以它非常可行,只是因为我缺乏这方面的知识.

r parametric-equations polar-coordinates

39
推荐指数
6
解决办法
3万
查看次数

R插值极坐标轮廓图

我试图从插值点数据中编写R中的轮廓极坐标图.换句话说,我在极坐标中有数据,我想绘制一个幅度值并显示插值.我想批量生产类似于以下的图(在OriginPro中生成):

OriginPro等高极坐标图

我在R中最接近这一点的尝试基本上是:

### Convert polar -> cart
# ToDo #

### Dummy data
x = rnorm(20)
y = rnorm(20)
z = rnorm(20)

### Interpolate
library(akima)
tmp = interp(x,y,z)

### Plot interpolation
library(fields)
image.plot(tmp)

### ToDo ###
#Turn off all axis
#Plot polar axis ontop
Run Code Online (Sandbox Code Playgroud)

产生的东西如下: 虚拟R插值图

虽然这显然不是最终产品,但这是在R中创建等高极坐标图的最佳方法吗?

除了2008年的档案邮件列表,我找不到任何关于这个主题的内容.我想我并没有完全致力于将R用于图(尽管这是我拥有数据的地方),但我反对手动创建.所以,如果有另一种语言具有此功能,请建议它(我确实看到了Python示例).

编辑

关于使用ggplot2的建议 - 我似乎无法使用geom_tile例程在polar_coordinates中绘制插值数据.我在下面列出了代码,说明了我的位置.我可以用直角坐标和极坐标绘制原始图形,但我只能得到插值数据以笛卡尔坐标绘制.我可以使用geom_point绘制极坐标中的插值点,但我无法将该方法扩展到geom_tile.我唯一的猜测是这与数据顺序有关 - 即geom_tile期望排序/有序数据 - 我已经尝试过每次迭代我都可以想到将数据排序为升序/降序方位角和天顶而没有变化.

## Libs
library(akima)
library(ggplot2)

## Sample data in az/el(zenith)
tmp = seq(5,355,by=10)
geoms <- data.frame(az = tmp,
                    zen = runif(length(tmp)),
                    value …
Run Code Online (Sandbox Code Playgroud)

plot r contour polar-coordinates

27
推荐指数
2
解决办法
1万
查看次数

根据方向和距离(矢量)获取点坐标

根据方向和距离得到点

我需要找到第二点的坐标.我知道弧度点之间的角度,我也知道矢量的长度.

如果有人能指出我的解决方案,我真的很感激.

javascript math canvas vector polar-coordinates

26
推荐指数
1
解决办法
2万
查看次数

在MATLAB极坐标图上修复径向轴

我在MATLAB中使用极坐标图(POLAR(THETA,RHO)).

是否有一种简单的方法来确定径向轴的范围,比如1.5?

我正在寻找类似于笛卡尔坐标轴的xlim,ylim命令的东西.尚未在文档中找到任何内容.

matlab plot histogram polar-coordinates

15
推荐指数
3
解决办法
4万
查看次数

使用python生成RA与DEC赤道坐标图

我正在尝试生成一个看起来或多或少像这样的赤道坐标图:

在此输入图像描述

(该图取自本文,它显示了大型和小型MC在赤道坐标中的位置)

关于这个情节需要注意的重要事项:

  • theta轴(即:赤经)是在H:M:S,因为它是在天文学习惯,而不是在作为默认度(小时,分,秒)polar选项不会在matplotlib.
  • r轴(即:磁偏角)从-90°向外增加,并且网格中居中(0H,-90°).
  • 该图被剪裁,意味着只有一部分显示而不是整个圆(matplotlib默认情况下).

使用polar=True选项matplotlib,我设法生成的最接近的图是这个(MWE下面是这里的数据文件;由于数据文件稍微小一些,因此与上图相比,某些点不存在):

在此输入图像描述

我还需要在绘图中添加第三列数据,这就是为什么我添加一个颜色条并将每个点相应地添加到z数组的原因:

在此输入图像描述

所以我现在最需要的是一种剪辑情节的方法.主要基于这个问题而且这个例子 @cphlewis与他的回答非常接近,但仍然缺少一些东西(在他的回答中提到).

任何有关此问题的帮助和/或指示将不胜感激.


MWE

(注意我gridspec用来定位子图,因为我需要在同一个输出图像文件中生成其中的几个)

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

def skip_comments(f):
    '''
    Read lines that DO NOT start with a # symbol.
    '''
    for line in f:
        if not …
Run Code Online (Sandbox Code Playgroud)

python matplotlib astronomy polar-coordinates

13
推荐指数
2
解决办法
5436
查看次数

使用ggplot&coord_polar(Condegram)的螺旋条形图

我想在阿基米德螺旋上创建一个条形图,就像这里讨论的那样.

最终目标是这样的,但不那么压倒性.

这是一个示例数据帧:

    test <- structure(list(month = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
                                     1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), 
           year = c(2015, 2015, 2015, 2015, 2015, 2015, 2015, 
                    2015, 2015, 2015, 2015, 2015, 2016, 2016, 
                    2016, 2016, 2016, 2016, 2016, 2016, 2016, 
                    2016, 2016, 2016), 
           value = c(49, 34, 35, 34, 50, 35, 48, 50, 44, 38, 42, 
                   43, 33,30, 42, 43, 58, 55, …
Run Code Online (Sandbox Code Playgroud)

r spiral ggplot2 polar-coordinates

12
推荐指数
1
解决办法
1017
查看次数

笛卡尔坐标到极坐标

看一下这里的例子:http://www.brianhare.com/physics/so.html

看看我在使用这两个主要功能的console.log:

    function distanceBetween2pts(x1, y1, x2, y2) {
        console.log("Particle: ("+x1+","+y1+") Mouse: ("+x2+","+y2+")");
        //  Pythagoras Theorem
        // PQ = sqrt( (x2-x1)^2 + (y2-y1)^2 )
        var x = (x2-x1);
        var y = (y2-y1);

        this.radius = Math.sqrt(x*x + y*y);
        this.x = x;
        this.y = y;
    }

    function polar2cartesian(R, theta) {
        this.x = R * Math.cos(theta);
        this.y= R * Math.sin(theta);
    }
Run Code Online (Sandbox Code Playgroud)

当鼠标位于粒子的上方和右侧(中心圆)时,例如: 在此输入图像描述

控制台日志显示:

Particle: (300,250) Mouse: (326,223)
artan(-27 / 26) = angle: -46.08092418666069 - theta -0.8042638494191191
Run Code Online (Sandbox Code Playgroud)

它应该是arctan(27/26)=角度:46:theta = 0.8.因为即使老鼠在中心"上方",它也会将y2-y1读为-27,因为坐标系统基于左上方的0,0.

那么问题是当X和Y都为负时使θ为正,而它应该指向相反的方向(从中心点向外).我知道我可以在这里做一个180度的技巧,但我想知道我做错了什么.

javascript math geometry cartesian polar-coordinates

9
推荐指数
1
解决办法
9377
查看次数

如何在ggplot2中包围极坐标限制?

我有一个圆形空间,角度0和360是等价的.我想在这个空间中绘制矩形,使矩形可以穿过这个值.但是,我遇到了ggplot2的问题.

base <- ggplot() +
  scale_x_continuous(breaks = seq(45, 360, 45), limits = c(0, 360)) +
  scale_y_continuous(breaks = seq(0, 1, 0.2), limits = c(0, 1)) +
  coord_polar(theta = "x", start = 1.5 * pi, direction = -1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

1.尝试绘制超过xlim的值:

base + geom_rect(aes(xmin = 340, xmax = 380, ymin = 0.4, ymax = 0.6), 
  color = "darkblue", fill = "steelblue")
#> Warning message:
#> Removed 1 rows containing missing values (geom_rect). 
Run Code Online (Sandbox Code Playgroud)

xlim之外的所有值都被删除,因此这不起作用.

2.尝试使用重新调整的值进行绘图

base + geom_rect(aes(xmin = 340, xmax = 380 %% 360, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 polar-coordinates

9
推荐指数
1
解决办法
1025
查看次数

如何在极坐标图中弯曲文本?

你好 Matplotlib 专家,

如何在 matplotlib 极坐标图中曲线文本?在我下面的尝试中,我的代码单独旋转每个字符,但这样做会删除每个字体的自然间距。有人可以描述传递ax.textmatplotlib的解决方案吗?

import numpy as np
import matplotlib as mpl
import matplotlib.pylab as plt

def curveText(text, height, minTheta, maxTheta, ax):
    interval = np.arange(minTheta, maxTheta, .022)
    if( maxTheta <= np.pi):
        progression = interval[::-1]
        rotation = interval[::-1] - np.arctan(np.tan(np.pi/2))
    else:
        progression = interval
        rotation = interval - np.arctan(np.tan(np.pi/2)) - np.pi

    ## Render each letter individually
    for i, rot, t in zip(progression, rotation, text):
        ax.text(i, height, t, fontsize=11,rotation=np.degrees(rot), ha='center', va='center')

def buildCircularHeatMap( data=None, label=None, cmaps=None, categorymap=None, vmin=0, …
Run Code Online (Sandbox Code Playgroud)

rendering numpy matplotlib python-3.x polar-coordinates

9
推荐指数
1
解决办法
431
查看次数

Matplotlib - 在极坐标图中绘制一个光滑的圆

我非常喜欢matplotlib的极地情节,并且愿意继续使用它(因为我的数据点无论如何都以极坐标给出,我的环境是圆形的).

但是,在图中,我想在特定点添加给定半径的圆.

通常,我会这样做:

 ax = plt.subplot(111)
 ax.scatter(data)
 circle = plt.Circle((0,0), 0.5)
 ax.add_artist(circle)
 plt.show()
Run Code Online (Sandbox Code Playgroud)

但是,在极坐标中,我不能使用圆,因为它采用直角坐标.

我想出的想法是:生成具有恒定径向坐标的点阵列和[0,2PI]中的角坐标或完全切换到直角坐标.这两种解决方案都不是很令人满意 - 使用matplotlib可以做得更好吗?

谢谢!

python geometry matplotlib polar-coordinates

8
推荐指数
1
解决办法
6620
查看次数