我知道这可能是一个简单的问题,但我真的很挣扎......
以iris
数据集为例,我可以使用以下代码根据不同的物种执行不同颜色的绘图:
plot(iris$Sepal.Length, iris$Sepal.Width, col=iris$Species)
legend('topright', legend=c("setosa", "virginica", "versicolor"))
但实际上我无法在图例中添加绘图调用中使用的相同颜色。
此外,我使用的数据集有几个唯一值。有没有办法添加颜色而不手动指定它们?
ggplot
会根据aes
选项中使用的颜色自动添加图例,但我需要对plot
包执行相同的操作。
有简单的解决方案吗?
由于
答案 0 :(得分:1)
你可以试试这个
$dom = new DOMDocument;
$dom->loadHTML($variable, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$br_tags = $dom->getElementsByTagName('br');
$i = $br_tags->length - 2; // -2 to leave the last one conversion
while($i > -1) {
$br = $br_tags->item($i);
$pipe = $dom->createTextNode('|');
$br->parentNode->replaceChild($pipe, $br);
$i--;
}
echo $dom->saveHTML();
答案 1 :(得分:1)
你的情节调用使用与iris$Species
的值对应的默认颜色(即1,2,3,记住它'因子,请参阅as.numeric(iris$Species)
的输出!)
对于只有少数几个类,简单的解决方案是执行以下操作:
cols <- c("darkgreen", "darkblue", "orange")
plot(iris$Sepal.Length, iris$Sepal.Width, col=cols[iris$Species], pch=20)
legend('topright', legend=levels(iris$Species),
col= cols, pch=20)
更通用的解决方案是使用颜色调色板,例如使用heat.colors
,gray.colors
或rainbow.colors
等功能
cols <- heat.colors(5) // 5 is the number of colors in the palette
在RColorBrewer
包中找到了更多精美的调色板。
此外,colorRampPalette
功能允许您混合这些调色板以获得更平滑的结果。例如:
library(RColorBrewer)
colorRampPalette(brewer.pal(9,"Blues"))(100)