Как я могу создавать растровые графики с той же цветовой шкалой в R

Я создаю несколько карт из растровых файлов с помощью пакета "raster" в R. Я хотел бы создать сравнительные растры, показывающие несколько карт рядом. Для этого важно, чтобы используемые цветовые шкалы были одинаковыми для всех карт, независимо от значений на каждой карте. Например, если карта 1 имеет значения от 0 до 1, а карта 2 имеет значения от 0 до 0,5, ячейки со значением 0,5 должны иметь одинаковый цвет на обеих картах.

Например:

  • карта 1 имеет значения от 0 до 1
  • карта 2 имеет значения от 0 до 0. 5
  • цвет меняется с красного (самый низкий) на зеленый (самый высокий)

Я хотел бы, чтобы значение 0,5 было одинаковым на обеих картах (т.е. желтым, как на полпути между красным и зеленым). В настоящее время он желтый на карте 1 и зеленый на карте 2.

Я не могу найти способ заставить это работать. Я не вижу способа установить диапазон значений пикселей для использования с функцией построения графика. setMinMax () не помогает (поскольку «график» всегда вычисляет значения). Даже пытаясь установить значения вручную (например, Я не вижу способа установить диапазон значений пикселей для использования с функцией построения графика. setMinMax () не помогает (поскольку «график» всегда вычисляет значения). Даже пытаясь установить значения вручную (например, Я не вижу способа установить диапазон значений пикселей для использования с функцией построения графика. setMinMax () не помогает (поскольку «график» всегда вычисляет значения). Даже пытаясь установить значения вручную (например,g1 @ данныеЯ не знаю, как обращаться с DOMElement, который он мне дает.

В руководстве для Zend_Dom код говорит:

foreach ($results as $result) {
    // $result is a DOMElement
}

Как мне использовать этот DOMElement?

Подробный пример (ищу якорные элементы на Google):

$url='http://google.com/';
$client = new Zend_Http_Client($url);
$response = $client->request();
$html = $response->getBody();
$dom = new Zend_Dom_Query($html);
$results = $dom->query('a');
foreach($results as $r){
     Zend_Debug::dump($r);
}

Это дает мне:

object(DOMElement)#81 (0) {
}
object(DOMElement)#82 (0) {
}
object(DOMElement)#83 (0) {
}
... etc, etc...

Что меня сбивает с толку, так это то, что похоже, что каждый элемент ничего не содержит (0)! Это не так, но это мое первое впечатление. Итак, я копаюсь в Интернете и обнаруживаю, что могу добавить nodeValue , чтобы получить что-то из этого:

Zend_Debug::dump($r->nodeValue);

, что дает мне:

string(6) "Images"
string(6) "Videos"
string(4) "Maps"
...etc, etc...

Но где я сталкиваюсь с проблемой, так это с получением определенных элементов и их содержимого.

] Например, учитывая этот html:

  <div class="newsBlurb">
   <span class="newsDate">Mon, 11 October 2010</span>
   <h3 class="newsHeadline"><a href="http://foo.com/1/2/">Some text</a></h3>
   <a class="newsMore" href="http://foo.com/1/2/">More</a>
  </div> 
  <div class="hr"></div>
  <div class="newsBlurb">
   <span class="newsDate">Mon, 16 August 2010</span>
   <h3 class="newsHeadline"><a href="http://bar.com/pants.html">Stuff is here</a></h3>
   <a class="newsMore" href="http://bar.com/pants.html">More</a>
  </div> 

, я могу взять текст из каждого newsBlurb, используя технику, которую я использую в примере Google, но не могу получить каждый элемент отдельно. Я хочу получить дату и куда-нибудь ее приклеить, возьмите текст заголовка и прикрепите его где-нибудь и получите ссылку для использования. Но все, что я получаю, это фактический текст в div.

Как мне получить от этого то, что я хочу?


EDIT Вот еще один пример, который работает не так, как я ожидал. Есть идеи, почему?

$url = 'http://php.net/manual/en/class.domelement.php';
$client = new Zend_Http_Client($url);
$response = $client->request();
$html = $response->getBody();
$dom = new Zend_Dom_Query($html);
$newsBlurbNode = $dom->query('div.note');
Zend_Debug::dump($newsBlurbNode);

это дает мне:

object(Zend_Dom_Query_Result)#867 (7) {
  ["_count":protected] => NULL
  ["_cssQuery":protected] => string(8) "div.note"
  ["_document":protected] => object(DOMDocument)#79 (0) {
  }
  ["_nodeList":protected] => object(DOMNodeList)#864 (0) {
  }
  ["_position":protected] => int(0)
  ["_xpath":protected] => NULL
  ["_xpathQuery":protected] => string(33) "//div[contains(@class, ' note ')]"
}

Пытаясь получить что-нибудь из этого, я использовал:

$children = $newsBlurbNode->childNodes;
     foreach ($children as $child) {
       }

Что приводит к ошибке, потому что в цикле foreach ничего нет. Ага! Что я не получаю?

5
задан Lothar 30 November 2010 в 22:18
поделиться