使用plotrix包radial.plot为径向图中的各个点指定颜色

时间:2016-09-23 14:41:54

标签: r list polar-coordinates plotrix

我有2个数据列表。

a = c(0, 14400, 15000, 1600)
b = c(0, 1.1, 2.3, 4.5)

我想使用径向图使用极坐标(径向)坐标绘制图形。 我想要r = theta,所以r和theta的坐标值在列表“a”中。

对于我想要使用的点的颜色,列出“b”以使用条件指定每个点的颜色。 例如: 如果b中elemnt的值小于1,则该元素的颜色为黑色。 如果b中元素的值在1和2之间,则颜色为绿色。 如果b中元素的值大于3,则颜色为红色。

结果列表如下:

c = c("black", "green", "red", "red")

最后一步是使用列表“c”为元素着色。 总之,我的问题的答案需要两个步骤: 1)基于b的值创建具有颜色名称列表的新列表“c” 2)使用径向图中的列表c为图中的每个符号着色(我不知道这是否可行)

这是我到目前为止所拥有的。

pp <- radial.plot(a, a, start = -pi/3, rp.type = "s", clockwise = TRUE, point.symbols=19)
pp

实际数据要大得多,但我只提供一个小例子代码来关注我需要解决的两个问题。 我能够使用ggplot2生成这个图。但是,由于其他原因,我更倾向于使用plotrix包中的radial.plot函数(极坐标/径向坐标的代码似乎更简单,更容易使用)。

请帮忙,我是R.的新手。谢谢你。

1 个答案:

答案 0 :(得分:1)

此代码应足够灵活,以生成所需的绘图类型。它生成如下所示的图形。对于角度我缩放它们以使a的最大值映射到2 * pi。这将给出情节的螺旋形外观。不这样做意味着角度将是a modulo 2 * pi中的值,并且对于大数字,这似乎是随机的。

关于分配颜色的第二部分可以通过基于逻辑索引分配颜色来完成。可以根据需要添加更多条件。没有特定的模式,给出更一般的着色结果并不简单。

enter image description here

library(plotrix)

# given example data
a = c(0, 14400, 15000, 1600)
b = c(0, 1.1, 2.3, 4.5)


# initializing vector of colors as NA
colors_plot <- rep(NA,length(b))

# set of conditions listed in the plot
colors_plot[b < 1] <- "black"
colors_plot[intersect(1 < b,b < 2)] <- "green" # need intersect because of double condition
colors_plot[b > 2] <- "red"
# add more conditions as needed

pp <- radial.plot(a, # radial distance
                  a*2*pi/max(a), # scaling so max(a) maps to 2*pi, this avoids the cooridnates wrapping
                  start = -pi/3, # same as code
                  rp.type = "s",
                  clockwise = TRUE,
                  point.symbols=19,
                  point.col=colors_plot, # colors calcualted above
                  radial.labels=NA # not plotting radial axis labels
                  )