2014-01-12 2 views
6

Я читаю на Tufte's data-ink ratio, и мне было интересно, можно ли измерить количество «чернил», которое использует сюжет?Измерение «чернил» графика

Если это невозможно в R, возможно, с помощью другого инструмента, такого как GIMP или imagemagick?

+0

Я предполагаю, что сложность заключается в том, должно ли решение автоматически определять, какие «чернила» соответствуют данным, а какие нет. Это так же просто, как сказать: «фоновые« чернила »- это не данные, а остальное?» – Jon

+0

Не совсем. Я не пытаюсь измерить соотношение данных и чернил, а просто количество чернил сюжета (как-то независимое от разрешения). Если вы знаете «чернила» из двух графиков, отображающих одну и ту же информацию (при этом «чернила данных» являются одинаковыми), вы можете получить соотношение чернил данных самостоятельно. – ECII

+0

см. Https://github.com/ceteri/dataink в качестве отправной точки –

ответ

6

Я бы предложил использовать grid.cap() для преобразования содержимого графического устройства в растровое изображение, после чего просто вычислить долю небелых пикселей (иначе говоря, «чернила»). В следующем примере, чтобы сфокусировать вычисления на чернилах в области построения графика, я установил par(mar=c(0,0,0,0)), но вы можете отбросить эту строку, если хотите также проверить количество чернил в осях, тиках, меток осей, заголовке и т. Д. .

library(grid) 

## Plot to R's default graphical device 
opar <- par(mar=c(0,0,0,0)) 
plot(rnorm(1e4), rnorm(1e4), pch=16) 

## Capture contents of the graphics device as a raster (bitmap) image 
p <- grid.cap() 

## Compute the proportion of pixels that are not white (i.e. are inked in) 
sum(p!="white")/length(p) 
# [1] 0.2414888 

## Restore pre-existing graphical parameters 
par(opar)      
Смежные вопросы