#highcharts #polygon #r-highcharter
#highcharts #многоугольник #r-highcharter
Вопрос:
library(highcharter)
highchart() %>%
hc_add_series(name='Polygon',type='polygon',data=list(c(1,4),c(2,4), c(3,3), c(2,3)),
borderRadius = 10, lineColor = "red", lineWidth = 3)][1]][1]
Всем привет. Я использую многоугольник для отображения некоторых данных. Я бы предпочел, чтобы границы были круглыми, но borderRadius
атрибут не работает для многоугольника.
У кого-нибудь есть идея, как архивировать закругленный вид моего многоугольника? Документация в этом случае не помогла :-(. Это сделано в пакете R Highcharter, но я также был бы полностью согласен с примером в собственной библиотеке JS. Спасибо!
Комментарии:
1. Привет. К сожалению, в Highcharts такой опции нет. Вы могли бы добавить много поддельных точек возле углов, чтобы вручную «закруглить» углы, но это никогда не будет идеальным округлением. Я не вижу другого пути
2. Жаль, но я наткнулся на решение.
Ответ №1:
Это работает несколько:
spline.poly <- function(xy, vertices, k=3, ...) {
# Assert: xy is an n by 2 matrix with n >= k.
# Wrap k vertices around each end.
n <- dim(xy)[1]
if (k >= 1) {
data <- rbind(xy[(n-k 1):n,], xy, xy[1:k, ])
} else {
data <- xy
}
# Spline the x and y coordinates.
data.spline <- spline(1:(n 2*k), data[,1], n=vertices, ...)
x <- data.spline$x
x1 <- data.spline$y
x2 <- spline(1:(n 2*k), data[,2], n=vertices, ...)$y
# Retain only the middle part.
cbind(x1, x2)[k < x amp; x <= n k, ]
}
X <- matrix(c(resultdf$yAxis, resultdf$xAxis), ncol=2)
hpts <- chull(X) # Creates indices of a convex hull from a matrix
hpts <- c(hpts, hpts[1]) # connect last and first dot
hpts <- data.frame(X[hpts, ])
hpts <- data.frame(spline.poly(as.matrix(data.frame(hpts$X1, hpts$X2)), 500)) %>%
setNames(c("yAxis", "xAxis"))
spline.poly
функция создает множество новых точек, которые соединяются с более округлой формой 🙂