Сюжет: графики WebGL нечеткие / размытые - PullRequest
0 голосов
/ 21 июня 2020

Когда я создаю графики SVG с помощью Plotly, у меня нет проблем. Когда я создаю графики WebGL, нанесенные точки не такие четкие: они «нечеткие» или «размытые». Я использую сюжетно. js 1.54.1. (И я использую его в основном через plotly-r 4.9.2.1, но, похоже, это не проблема.)

Вот минимальная демонстрация проблемы с использованием R для создания подзаговора:

library(plotly)
data(iris)
mySVG <- plot_ly(
  x      = ~Petal.Length, y = ~Petal.Width,
  type   = "scatter", mode  = "markers",  
  color  = ~Species,
  data   = iris,
  marker = list(size = 10))
myWebGL <- toWebGL(mySVG)
subplot(mySVG, myWebGL, nrows = 2)  

Это дает это число . Левая панель, график SVG, заметно резче, чем правая панель, которая представляет собой график WebGL. Почему графики Plotly в WebGL такие нечеткие?

Проблема была несколько раз отмечена в Plotly. js Репозиторий Github: например, https://github.com/plotly/plotly.js/issues/3246 и https://github.com/plotly/plotly.js/issues/2431. (Последняя проблема оформлена как проблема с обработкой Plotly цветовой модели hsl, но размытый рендеринг возникает даже тогда, когда мы не используем эту модель.)

Проблема не связана c с сетчаткой экраны. Мой собственный монитор имеет разрешение всего 110 dpi, и проблема остро стоит даже на мониторах такого типа.

То, что я пробовал:

  • Изменение используемой опции glPixelRatio при настройке графиков.
  • Манипулирование элементом canvas графиков WebGL. Я читал, что нечеткость может возникнуть, когда canvas.width и canvas.clientWidth не совпадают. Но здесь это не проблема. (То же самое верно для canvas.height и canvas.clientHeight.)
  • Использование Plotly.newplot () для повторного рендеринга графика на этот комментарий .

Ничего из этого не сработало. Есть ли решение этой проблемы?

1 Ответ

0 голосов
/ 10 июля 2020

Есть обсуждение на https://community.plotly.com/t/webgl-plots-are-blurry/41716. Одно из сообщений в этом потоке заключается в том, что SVG является векторным, а WebGL - пиксельным, что затрудняет повышение качества WebGL до SVG. Но поток также предполагает, что существует еще не выполненный запрос на перенос, который может быть полезен.

...