[英]specifying color to individual points in a radial plot using plotrix package radial.plot
我有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”为元素着色。 总而言之,我的问题的答案需要2个步骤:1)使用b的值创建一个带有颜色名称列表的新列表“ c” 2)在径向图中使用列表c为图中的每个符号着色(我不不知道这是否可能)
这是我到目前为止所拥有的。
pp <- radial.plot(a, a, start = -pi/3, rp.type = "s", clockwise = TRUE, point.symbols=19)
pp
实际数据要大得多,但是我仅提供一个小示例代码来关注我需要解决的2个问题。 我能够使用ggplot2生成此图。 但是,由于其他原因,我宁愿在plotrix包中使用radial.plot函数(极坐标/径向坐标的代码似乎更容易使用)。
请帮助,我是R的新手。谢谢。
此代码应足够灵活以生成所需的绘图类型。 生成如下图。 对于角度,我对其进行了缩放,以使a
的最大值映射为2 * pi。 这将使图呈螺旋状。 如果不这样做,这意味着,该角度将在值a
模2 * PI,和具有大量这种随机出现。
关于分配颜色的第二部分可以通过基于逻辑索引分配颜色来完成。 可以根据需要添加更多条件。 没有特定的图案,要给出更一般的着色结果并不容易。
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
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.