ggplot в единицах Mb Kb [дубликат]

Я пропустил здесь эту точку, или это просто следующее:

>>> string = "ab1cd1ef"
>>> string.replace("1","")
'abcdef'
>>>

Поместите его в цикл:

>>>
>>> a = "a!b@c#d$"
>>> b = "!@#$"
>>> for char in b:
...     a = a.replace(char,"")
...
>>> print a
abcd
>>>
10
задан mnel 21 December 2012 в 01:07
поделиться

1 ответ

Я использовал library("sos"); findFn("{SI prefix}") для поиска пакета sitools.

Построить данные:

bytes <- 2^seq(0,20) + rnorm(21, 4, 2)
time <- bytes/(1e4 + rnorm(21, 100, 3)) + 8
my_data <- data.frame(time, bytes)

Загружать пакеты:

library("sitools")
library("ggplot2")    

Создать сюжет:

(p <- ggplot(data=my_data, aes(x=bytes, y=time)) +
     geom_point() +
     geom_line() +
     scale_x_log10("Message Size [Byte]", labels=f2si) +
     scale_y_continuous("Round-Trip-Time [us]"))

Я не уверен, как это сравнивается с вашей функцией, но, по крайней мере, кто-то другой столкнулся с проблемой написания этого документа ...

Я изменил ваш стиль кода немного - точки с запятой на концах строк являются безвредными, но обычно являются признаком кодера MATLAB или C ...

edit: Первоначально я определил общую функцию форматирования

si_format <- function(...) {
    function(x) f2si(x,...)
}

, следуя формату (например) scales::comma_format, но в этом случае это кажется ненужным - только часть более глубокой магии ggplot2, которую я не совсем понимаю.

Код OP дает то, что кажется мне не совсем правильным ответом: самый правый тик оси - «1000K», а не «1M» - это можно исправить, изменив тест >1e6 на >=1e6. С другой стороны, f2si использует нижний регистр k - я не знаю, требуется ли K (обертывание результатов в toupper() может исправить это.)

Результаты OP (si_vec):

enter image description here [/g0]

Мои результаты (f2si):

enter image description here [/g1]

24
ответ дан Ben Bolker 25 August 2018 в 20:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: