Проценты на графике по оси Y

Метод «isReachable» во многих случаях не использовался для меня. Вы можете прокрутить страницу вниз, чтобы увидеть мою альтернативу для простого тестирования, если вы в сети и можете разрешать внешние хосты (например, google.com) ... Что обычно работает на машинах * NIX.

Проблема

Об этом много болтовни:

Часть 1: Воспроизводимый пример проблемы

Обратите внимание, что в этом случае он не работает ,

       //also, this fails for an invalid address, like "www.sjdosgoogle.com1234sd" 
       InetAddress[] addresses = InetAddress.getAllByName("www.google.com");
      for (InetAddress address : addresses) {
        if (address.isReachable(10000))
        {   
           System.out.println("Connected "+ address);
        }
        else
        {
           System.out.println("Failed "+address);
        }
      }
          //output:*Failed www.google.com/74.125.227.114*

Часть 2: Hackish обходной путь

В качестве альтернативы вы можете сделать это:

// in case of Linux change the 'n' to 'c'
    Process p1 = java.lang.Runtime.getRuntime().exec("ping -n 1 www.google.com");
    int returnVal = p1.waitFor();
    boolean reachable = (returnVal==0);

Опция -c ping позволит ping просто попытаться добраться до сервера один раз (в отличие от бесконечного пинга, который мы использовали для использования на терминале).

Это вернет 0, если хост достижимы. В противном случае вы получите «2» в качестве возвращаемого значения.

Гораздо проще - но, конечно, это специфичная для платформы. И может быть некоторые предостережения о привилегиях для использования этой команды, но я нахожу, что это работает на моих машинах.


ПОЖАЛУЙСТА, обратите внимание: 1) Это решение не является качеством продукции. Это немного взломать. Если google не работает, или ваш интернет временно медленный, или, может быть, даже если есть какая-то забава в ваших привилегиях / системных настройках, если бы можно было вернуть ложные негативы (т. Е. Он мог выйти из строя, даже если входной адрес достигнут). 2) Ошибка isReachable является нерешенной проблемой. Опять же - есть несколько онлайн-ресурсов, указывающих на отсутствие «идеального» способа сделать это на момент написания этой статьи, из-за того, как JVM пытается достичь хостов - я думаю, что это неотъемлемо специфичная для платформы задача, которая, хотя и простая , еще недостаточно отвлечен JVM.

16
задан Youcha 26 July 2012 в 17:20
поделиться

3 ответа

Вот один из способов использования las=TRUE для поворота меток на оси Y и axis() для новой оси Y с отрегулированными метками.

dates <-  1:10
returns <- runif(10)

plot(dates, returns, yaxt="n")
axis(2, at=pretty(returns), lab=pretty(returns) * 100, las=TRUE)
21
ответ дан johannes 26 July 2012 в 17:20
поделиться

Если вы используете ggplot, вы можете использовать пакет scale .

library(scales)
plot + scale_y_continuous(labels = percent)
6
ответ дан vladiim 26 July 2012 в 17:20
поделиться
dates <-  1:100
returns <- runif(100)
yticks_val <- pretty_breaks(n=5)(returns)
plot(dates, returns, yaxt="n")
axis(2, at=yticks_val, lab=percent(yticks_val))

Основные характеристики:

  1. Нет необходимости явно добавлять «%»
  2. Вручную исправьте количество y-тиков, чтобы соответствовать дальнейшим графикам. Здесь я выбрал 5.

See

Объединение двух ответов вместе @rengis @vladiim

2
ответ дан Puriney 26 July 2012 в 17:20
поделиться
Другие вопросы по тегам:

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