6 . Kapitulua Grafikoak Rn

R lengoaiak datuak bistaratzeko aukera asko ematen ditu. Kapitulu honetan oinarrizko instalazioak dakartzan aukera ohikoenak aztertuko ditugu. Ondoren, sistema aurreratu batzuei sarrera labur bat emango diegu. Amaitzeko, grafikoak fitxategietan nola gorde daitezkeen azalduko dugu.

6.1 Oinarrizko grafikoak

Rko oinarrizko instalazioak hainbat funtzio ditu grafiko mota ezberdinak egiteko. Horrez gain, grafikoen itxura kontrolatzeko eta grafiko konposaketak sortzeko funtzioak ere eskuragarri ditugu pakete estrarik instalatu gabe. Atal honetan Rrekin datozen funtzio nagusienak aztertuko ditugu.

6.1.1 plot, lines eta points funtzioak

R lengoaian grafikoak egiteko funtziorik sinpleena plot funtzioa da. Funtzio hau objektu mota ezberdinentzako inplementatuta dagoenez, funtzio berdinak emaitza ezberdinak eman ditzake. Kasurik sinpleenean dispertsio-grafikoak egiteko erabil dezakegu, bi bektore, x eta y, emanik:

x <- runif(150) # Ausazko 150 zenbaki sortzen ditu [0,1] tartean.
y <- log(x)
plot(x=x, y=y)
Dispertsio-grafiko sinple bat

Irudia #6.1: Dispertsio-grafiko sinple bat

Emaitza 6.1 irudian dago. Ikus daitekeen bezala,plot funtzioak bi bektoreak hartzen ditu eta, elementu bakoitzeko, puntu bat gehitzen dio grafikoari, X koordenatua x bektoretik hartuz eta Y koordenatua ybektoretik. Funtzioak beste hainbat parametro ditu. Geroago (6.1.3 atalean: Parametro grafikoak) xehetasun gehiagokin ikusiko ditugu aukera horiek. Bitartean, hona gehien erabiltzen diren argumentuak:

  • xlim eta ylim - Biak bi tamainako bektoreak dira eta X edota Y ardatzaren mugak adierazteko erabil daitezke (bektorearen lehenengo elementua balio minimoa eta bigarren elementua balio maximoa)
  • main eta sub - Grafikoari titulua eta azpititulua gehitzeko erabil daitezke. Bien kasuan karaktere-bektore bat pasatu behar diegu.
  • xlab eta ylab - Grafikoaren ardatzen izenak aldatzeko erabiltzen dira bi argumentu hauek.
  • col - Puntuen kolorea aldatzeko erabil daiteke. Argumentu honek zenbakizko balioak edo karaktere-bektoreak jaso ditzake9.
  • pch - Argumentu honek puntuak adierazteko erabiltzen den karakterea adierazten du. Zenbaki oso bat (1etik 25era) edo karaktere bat izan daiteke.
  • type - Puntuak bistaratu beharrean marra bat marraztu nahi badugu, argumentu honi 'l' balioa eman behar diogu, edo 'b' puntuak eta marra marraztu nahi badugu. Balio horiez gain beste hainbat aukera ditugu (ikusi funtzioaren laguntza).

Ikus dezagun adibide bat argumentu guzti hauekin (emaitza 6.2 irudian).

x <- seq(from=-5, to=5, by=0.5)
y <- runif(length(x)) # x-en tamainako bektore bat, [0,1] tarteko ausazko zenbakiekin.
plot(x=x, y=y, xlim=c(-3, 5), ylim=c(0, 1), 
     type='b', main="Nire grafikoa", 
     xlab="X ardatza", ylab="Y ardatza",
     col="dodgerblue4", pch=13)
`plot` funtzioaren erabileraren beste adibide bat

Irudia #6.2: plot funtzioaren erabileraren beste adibide bat

Lehen esan bezala, plot funtzioa generikoa da. Horrek esan nahi du hainbat objektu motarentzat inplementatuta dagoela; Lortutako emaitza objektu motaren araberakoa izango da. Adibide moduan, denbora serie bat sortuko dugu ts funtzioa erabiliz eta, ondoren, denbora serie hori marraztuko dugu (emaitza 6.3 irudian).

seriea <- ts(runif(10), frequency = 4, start = c(1959, 2))
plot(seriea, main="Denbora serie baten grafiko bat")
Denbora serie baten grafikoa

Irudia #6.3: Denbora serie baten grafikoa

Adibidean ikus daitekeen bezala, zenbait parametroen balioa ezarrita dago, marraztu nahi dugun objektua ts klasekoa delako. Adibidez, automatikoki, lerro diagrama bat burutu da.

Batzuetan, sortutako grafikoei beste marra edo puntu multzo batzuk gehitu beharko diegu. Horretarako bi funtzio ditugu, points eta lines. Funtzio horien funtzionamendua plot funtzioaren berdina da, baina emaitza grafiko berri batean sartu beharrean uneko grafikoan gehitzen da.

x <- seq(from=-10, to=10, by=0.1)
y.1 <- runif(n=length(x), min=0, max=1) # 0 eta 1 arteko 201 ausazko zenbaki
y.2 <- runif(n=length(x), min=2, max=3) # 2 eta 3 arteko 201 ausazko zenbaki
y.3 <- runif(n=length(x), min=5, max=6) # 5 eta 6 arteko 201 ausazko zenbaki

plot(x=x, y=y.1, type='l',
     xlab="X ardatza", ylab="Y ardatza", ylim=c(0,6))

lines(x=x, y=y.2, col="darkred")
lines(x=x, y=y.3, col="darkgreen")
Grafiko batean marra bat baino gehiago izan ditzakegu

Irudia #6.4: Grafiko batean marra bat baino gehiago izan ditzakegu

Goiko kodearekin sortutako grafikoa 6.4 irudian ikus dezakezu.

Gainera, grafiko bati lerro horizontal edo bertikal bat gehitu nahi badiogu, abline funtzioa erabili dezakegu:

x <- seq(from=0, to=20, by=0.1)
y <- log(x)

plot(x=x, y=y, type='l',
     xlab="X ardatza", ylab="Y ardatza")

abline(h=2, col="red") # Lerro horizontala
abline(v=2, col="green") # Lerro bertikala
Grafiko batean marra bat baino gehiago izan ditzakegu

Irudia #6.5: Grafiko batean marra bat baino gehiago izan ditzakegu

6.1.2 Beste ohiko grafiko mota batzuk

Dispertsio- eta marra-grafikoaz gain, badaude grafiko mota batzuk oso erabiliak direnak. Atal honetan batzuk aipatuko ditugu, barra-diagramak, histogramak eta kutxa-diagramak.

Aldagai kualitatibo edo diskretu bat irudikatzeko barra-diagramak barplot funtzioa erabiliz sor ditzakegu. Ikus dezagun adibide bat (emaitza 6.6).

altuera <- c(290, 246, 211, 191, 149)
etiketa <- c("Ane", "June", "Nahia", "Irati", "Uxue")
kolorea <- rainbow(5)
barplot(height=altuera, legend.text=etiketa, col=kolorea)
Barra-diagrama baten adibidea

Irudia #6.6: Barra-diagrama baten adibidea

Barra-diagramak egiteko barra bakoitzaren altuera, hau da, modalitate bakoitzaren maiztasuna (absolutua edo erlatiboa) behar dugu. Horrez gain, barra bakoitzari etiketa bat eta kolore bat eslei diezaiokegu10. Barra-diagrama konplexuagoak egin daitezke, altuera-bektore bat pasatu beharrean matrize bat pasatuz. Kontsulta ezazu funtzioaren laguntza informazio gehiago izateko.

Aldagai jarraitu (edo modalitate askoko aldagai diskretu) bat badugu, histograma baten bidez irudikatu dezakegu. R lengoaian histogramak hist funtzioa erabiliz era sinplean sor daitezke. Adibidez Rn topa daitekeen iris datu baseko Sepal.Width aldagaia irudikatu dezakegu:

hist(iris$Sepal.Width, breaks=25)
Histograma baten adibidea

Irudia #6.7: Histograma baten adibidea

Emaitza @reffig(fig:hist) irudian ikus dezakezu. Beste funtzioak bezala, hist funtzioak hainbat parametro ditu emaitzaren itxura aldatzeko. Parametro horien artean interesgarriena breaks da, zeinek X ardatza zein tartetan banatuko den adierazten duen.

Atal honekin amaitzeko, kutxa-diagramak nola egiten diren ikusiko dugu. Kasu honetan, boxplot funtzioari bektore bakar bat pasatzen badiogu kutxa bakarra sortuko du.

boxplot(iris$Sepal.Width)
Kutxa-diagrama adibide bat

Irudia #6.8: Kutxa-diagrama adibide bat

Askotan kutxa ezberdinak irudikatu nahi ditugu aldi berean, adibidez, bi aldagai (bat jarraitua eta bat kualitatiboa) aztertu nahi baditugu aldi berean. Adibidez, irudika dezagun iris datu baseko Sepal.Width aldagai jarraitua, Species aldagaiaren arabera (ikusi emaitza 6.9):

boxplot(iris$Sepal.Width~iris$Species, col="red")
Kutxa-diagrama adibide bat

Irudia #6.9: Kutxa-diagrama adibide bat

Ohartu, boxplot funtzioari ere parametro gehiago gehitu diezazkiogula, kolorea adibidez.

6.1.3 Parametro grafikoak

Aurreko atalean zenbait parametro ikusi ditugu. Berez, parametro asko daude grafikoen itxura kontrolatzeko (letra tamainak, lerroen lodierak, etab.). Parametro-zerrenda osoa ikustea ezinezkoa da (?par exekutatuz lor dezakezu), beraz atal honetan bereziki interesgarriak diren parametro batzuk aztertuko ditugu:

  • bty - Parametro honekin grafikoen markoa kontrola dezakegu. Gehien bat marko hori kentzeko erabiltzen da, bty='n' aukera gehituz.
  • cex - Letra eta karaktereen tamaina aldatzeko parametroa. Zenbakizko balioak hartzen ditu.
  • lwd - Marren lodiera aldatzeko parametroa.
  • lty - Marra mota aldatzeko parametroa. Zenbakizko balioak hartzen ditu.
  • xlog eta ylog - Balio logikoak. TRUE bada, X edota Y ardatza(k) eskala logaritmikoan marraztuko dira.

6.1.4 layout funtzioa

Batzuetan irudi berdinean grafiko bat baino gehiago sartu nahi dugu. R lengoaian layout funtzioa erabil dezakegu leihoa (edo fitxategia) zatitan banatzeko, gero zati bakoitzean grafiko bat marrazteko. Zati horiek matrize baten bidez definitzen dira, non matrizeak leiho nagusia adierazten duen eta matrizeko balioak (zenbaki kontsekutiboak) leihoan sortuko ditugun zatiak identifikatzen dituzten, bakoitzaren ordena zehaztuz.

Ikus dezagun adibide bat, kontzeptua argitzeko. Lehenik, matrize bat sortuko dugu hiru grafiko marrazteko eskema deskribatzeko. Eskema horretan leiho nagusia horizontalki bi zatitan banatuko dugu, eta beheko zatian grafiko bakarra sartuko dugu. Goiko zatitan, berriz, bi plot sartuko ditugu, biak tamaina berdinekoak. Eskema hori adierazteko ondoko matrizea behar dugu:

eskema <- matrix(c(1,2,3,3), byrow=TRUE, ncol=2)
eskema
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    3

Leihoa eskema horren arabera zatitzeko layout funtzioa erabili behar dugu. Ondoren, hiru plot sartuko ditugu. Kontutan izan lehenengo plota 1 balioa erabiliz definitu dugun zatian marraztuko dela, bigarrena 2 balioa erabiliz definitutakoan eta azkena 3 balioaren bidez adirazitako zatian.

layout(mat=eskema)

x <- runif(100)
y <- exp(x) + runif(100, 0, 0.25)

boxplot(x, main="1. Grafikoa")

boxplot(y, main="2. Grafikoa")

plot(x, y, main="3. Grafikoa")
Grafiko bat baino gehiago batera marraz daitezke

Irudia #6.10: Grafiko bat baino gehiago batera marraz daitezke

Goiko kodearekin sortutako grafikoak 6.10 irudian ikus dezakezu. Era berean, beste konfigurazio posible bat 6.11 irudian ikus dezakegu eta kode honen bitartez lortzen da:

eskema <- matrix(c(1,2,3,2), byrow=TRUE, ncol=2)
layout(mat=eskema)
boxplot(x, main="1. Grafikoa")

boxplot(y, main="2. Grafikoa")

plot(x, y, main="3. Grafikoa")
Grafiko bat baino gehiago batera marraz daitezke

Irudia #6.11: Grafiko bat baino gehiago batera marraz daitezke

6.2 Grafikoak fitxategietan gorde

Orain arte grafikoak sortu ditugu non sortzen diren kontutan izan gabe. R lengoaian graphical device kontzeptua dugu, alegia, grafikoak sortzeko euskarriak. Bi euskarri mota ditugu, sistemaren leihoak (orain arte erabili ditugunak) eta fitxategiak.

Hainbat fitxategi mota erabil ditzakegu euskarri moduan, hala nola, PDFak eta png-ak. Fitxategi mota bakoitza sortzeko funtzio bat dugu (pdf, png, jpg, etab.). Oro har, funtzio guztietan hiru parametro nagusi ditugu, file, fitxategiaren bide-izena adierazteko eta width eta height, grafikoaren tamaina adierazteko. Tamainaren aldetik, kontutan izan behar da irudi bektorialeko fitxategietan (PDF, adibidez) tamainak hazbetetan adierazten direla defektuz, baina bit-mapako fitxategietan tamainak pixeletan jarri behar dira. Puntu hori oso garrantzitsua da, ezer gehiago aldatzen ez badugu letraren tamainan eragina izango baitu (geroz eta fitxategi txikiagoak, orduan eta letra tamaina handiagoa).

Grafiko bat fitxategi batean sortzeko hiru pausu hartu behar ditugu. Lehenengoa, fitxategia sortu, bigarrena, grafikoa egin, hirugarrena, fitxategia itxi. Hona hemen adibide bat, PDF fitxategi batekin.

pdf(file="grafiko_adibidea.pdf", width=8, heigh=6)

barplot(height=altuera, legend.text=etiketa, col=kolorea)

dev.off()
## png 
##   2

Azken agindua, dev.off(), uneko euskarria ixteko erabiltzen da. Adibidean uneko euskarri hori PDF bat denez, agindu horrekin fitxategia ixten dugu (uneko euskarria leiho bat izanez gero, leiho hori itxiko genuke). Kontutan izan R interpreteak, beste zer edo zer esan ezean, uneko euskarri erabiltzen duela, beraz, grafiko berri bat egin nahi dugunean, aurretik dev.off funtzioa erabili behar da irekita egon daitezkeen euskarri guztiak ixteko.

Grafikoak zuzenean fitxategietan sortu nahi ez badugu, leihoan dagoen grafikoa kopiatu dezakegu dev.copy2pdf funtzioa erabiliz edo, RStudio erabiltzen badugu, interfazeak ematen duen aukera erabiliz.

6.3 Beste sistema batzuk

R lengoaiaren oinarrizko instalazioak grafikoak egiteko aukera asko ematen ditu, baina badaude pakete asko eskuragarri grafiko sofistikatuagoak egiteko. Atal honetan, horietako batzuk aztertuko ditugu laburki.

6.3.1 ggplot2 paketea

Gaur egun Rn grafikoak egiteko pakete hedatuena ggplot2 da. Pakete honek grafikoak egiteko filosofia berezi bat inplementatzen du. Alde batetik, guk datu batzuk izango digutu (pentsatu matrize bat dugula, non errenkada bakoitza item bat den eta zutabe bakoitzak item hori deskribatzen duen aldagai bat den). Bestetik, datu horiek bistaratu nahi ditugu eta, horretarako, aldagaiak (zutabeak, alegia) eta grafikoaren elementu estetikoak (kokapena, forma, kolorea, etab.) mapeatu behar ditugu. Dispertsio-grafiko batean, adibidez, normalean bi aldagai izaten ditugu, eta aldagai horiek grafikoaren bi ezaugarri estetikokin mapeatzen ditugu, bat kokapen horizontalarekin (X ardatza) eta bestea kokapen bertikalarekin (Y ardatza). Horrelako grafiko batean informazio gehiago sartzerik badaukagu, beste elementu estetiko erabiliz, hala nola, puntuen tamaina eta kolorea.

ggplot2 paketea erabiltzeko datuak formatu konkretu batean egon behar dira: data.frame bat non errenkada bakoitza puntu bat den eta zutabe bakoitza aldagai bat. Datuak formatu horretan ez badaude, grafikoa egin aurretik prestatu behar ditugu. Jarraian dagoen adibidean Eustatetik deskargatutako errolda datuak erabiliko ditugu. Zehazki, lurralde bakoitzeko, urtez urte zenbat emakume eta gizon jaio diren izango dugu.

datu.gordinak <- read.csv("biztanleria.csv", header=FALSE, 
                          stringsAsFactors=FALSE)
head(datu.gordinak)
##     V1      V2          V3           V4      V5          V6           V7
## 1   NA     EAE         EAE          EAE   Araba       Araba        Araba
## 2   NA Guztira Gizonezkoak Emakumezkoak Guztira Gizonezkoak Emakumezkoak
## 3 2016   18182        9255         8927    3074        1546         1528
## 4 2015   18946        9703         9243    3245        1669         1576
## 5 2014   19456        9870         9586    3327        1706         1621
## 6 2013   19293        9871         9422    3146        1653         1493
##        V8          V9          V10      V11         V12          V13
## 1 Bizkaia     Bizkaia      Bizkaia Gipuzkoa    Gipuzkoa     Gipuzkoa
## 2 Guztira Gizonezkoak Emakumezkoak  Guztira Gizonezkoak Emakumezkoak
## 3    9108        4649         4459     6000        3060         2940
## 4    9298        4846         4452     6403        3188         3215
## 5    9702        4917         4785     6427        3247         3180
## 6    9726        4950         4776     6421        3268         3153

Ikus daitekeenez, datuak ez daude behar dugun formatuan eta, hortaz, taula eraldatu behar dugu. Horretarako lapply funtzioa erabiliko dugu zerrenda batean lurralde eta talde bakoitzeko datuak ateratzeko eta, ondoren, do.call funtzioa erabiliko dugu datu guztiak bata bestearen atzetik jartzeko.

a <- lapply(2:ncol(datu.gordinak),
            FUN=function(i){
              return(data.frame(Urtea=datu.gordinak[-(1:2), 1], 
                                Lurraldea=datu.gordinak[1, i], 
                                Taldea=datu.gordinak[2, i], 
                                Jaiotzak=as.numeric(datu.gordinak[-(1:2), i])))
            })
datu.prozesatuak <- do.call(rbind, a)
datu.prozesatuak[sample(1:nrow(datu.prozesatuak), size=10), ]
##      Urtea Lurraldea       Taldea Jaiotzak
## 615   1922     Araba Emakumezkoak      277
## 383   1946     Araba      Guztira     3406
## 70    1947       EAE      Guztira    24015
## 512   1921     Araba  Gizonezkoak       56
## 1169  1992  Gipuzkoa Emakumezkoak     3016
## 738   2007   Bizkaia  Gizonezkoak     5466
## 1176  1985  Gipuzkoa Emakumezkoak     3692
## 194   1927       EAE  Gizonezkoak     2215
## 493   1940     Araba  Gizonezkoak     1201
## 755   1990   Bizkaia  Gizonezkoak     5099

Behin datuak prest, hainbat motako grafikoak egin ditzakegu ggplot erabiliz. Lehenengoa marra-grafiko bat izango da, mapeo hauek eginez:

  • X ardatza - Urtea
  • Y ardatza - Jaiotzak
  • Kolorea - Lurraldea (EAE kenduta)
  • Lerro-mota - Taldea (‘Guztira’ kenduta)

Datu guztiak erabiliko ez ditugunez, lehenik aukeraketa egin behar dugu.

df <- subset(datu.prozesatuak, 
             subset=datu.prozesatuak$Lurraldea!='EAE' & 
               datu.prozesatuak$Taldea!='Guztira')

Grafikoa egiteko lehenik ggplot funtzioa erabili behar dugu, datuak pasatzeko eta egin nahi dugun mapeoa ezartzeko. Ondoren, nahi ditugun geruza guztiak gehi ditzakegu geom_ hasten diren funtzioekin. Gure kasuan marrak egingo ditugu (geom_line) eta, gainetik, puntuak jarriko ditugu (geom_point).

library(ggplot2)
ggplot(data=df, mapping=aes(x=Urtea, y=Jaiotzak, 
                            color=Lurraldea, linetype=Taldea)) + 
  geom_line() + geom_point(size=1)
Populazioaren eboluzioa, ggplot2 paketearekin sortutako grafiko baten bidez bistaratuta

Irudia #6.12: Populazioaren eboluzioa, ggplot2 paketearekin sortutako grafiko baten bidez bistaratuta

Sortutako grafikoa 6.12 irudian dago. Ikus daitekeen bezala, mapeoa egiteko aes funtzioa erabili behar dugu eta, zuzenean, elementu estetikoei data.frame egituran ditugun aldagaiak esleitzen diegu. ggplot2 paketak duen abantaila da era sinplean oso plot mota ezberdinak egin ditzakegula. Ikusi, adibidez, jarraian dagoen adibidea (datu berdinak erabiliz, baina kasu honetan kopuru totalekin) (emaitza 6.13 irudian):

df <- subset(datu.prozesatuak, 
             subset=datu.prozesatuak$Lurraldea=='EAE' & 
               datu.prozesatuak$Taldea!='Guztira')
ggplot(df, mapping=aes(x=Urtea, y=Jaiotzak, fill=Taldea)) + 
  geom_bar(stat="identity", position="dodge")
ggplot2 paketeko beste adibide bat

Irudia #6.13: ggplot2 paketeko beste adibide bat

Kasu honetan barra-grafikoa egin dugu, geom_bar funtzioa erabiliz. Funtzioan bi argumentu ditugu, lehenengoa zuzenean pasatzen dizkiogun Y balioak hartzeko esateko eta bestea kolore ezberdineko barrak elkarrondoan jartzeko esateko. Hare gehiago, era sinple batean grafiko ezberdinak sartu daitezke (emaitza 6.14 irudian):

df <- subset(datu.prozesatuak, 
             subset=datu.prozesatuak$Lurraldea!='EAE' &
                    datu.prozesatuak$Taldea!='Guztira')
ggplot(df, mapping=aes(x=Urtea, y=Jaiotzak, fill=Taldea)) + 
  geom_bar(stat="identity", position="dodge") + 
  facet_grid(.~Lurraldea) + theme(legend.position="bottom")
Grafiko bat baino gehiago irudi batean, ggplot2 paketea erabiliz

Irudia #6.14: Grafiko bat baino gehiago irudi batean, ggplot2 paketea erabiliz

6.3.2 Grafiko interaktiboak

ggplot2 paketea grafikoak egiteko gehien erabiltzen dena da, baina ez bakarra. Badaude hainbat pakete oso interesgarriak direnak eta, horien artean, batzuk grafiko interaktiboak sortzeko erabil daitezke. Horien artean googleVis paketea dugu, zeinek Google Chart Tools erabiltzen du grafikoak egiteko. Interaktiboak direnez, ez dira zuzenean leiho batean bistaratzen, paketeak web orriak sortzen ditu grafikoak bistaratzeko. Informazio gehiago paketearen dokumentazioan topa dezakezue.

6.4 Ariketak

1. ariketa Irudikatu, Rko oinarrizko funtzioak erabiliz, ondo funtzio hauek:

  • \(y=e^x\)
  • \(y=sin(x)\)
  • \(x^2 + y^2 = 100\)

2. ariketa Irudikatu goiko funtzioak ggplot2 paketea erabiliz.

3. ariketa Bilatu nola egin zurtoin-eta-hosto diagramak R lengoaian eta sortu grafiko bat nahi duzun datuekin (hartu adibidez, klaseko apunteetako adibidea).

4. ariketa Sektore-diagramak egiteko pie funtzioa erabil dezakezue. Funtzioaren laguntza kontsultatuz, egin horrelako grafiko bat 6.1.2 ataleko nesken izeneko datuak bistaratzeko

5. ariketa Kargatu datuen karpetan dagoen Europako_populazioa.csv fitxategia. Bertan Europako lurraldeen populazioaren eboluzioa duzue, 2008tik 2017ra. Egin marra-grafiko bat Suediako populazioa urtez urte erakusteko. Grafikoan bi marra egon behar dira, bat genero bakoitzeko. Egin plot berdina Danimarkarako.


  1. Karaktere-bekotoreek kolorearen izena adierazten dute. Gauzak horrela, col='red' edo col='green' idatzi dezakegu. Aukera guztiak dokumentu honetan topa ditzakezu.

  2. Kasu honetan koloreak eskuz definitu beharrean paleta bat sortu dugu, rainbow funtzioa erabiliz. Laburki, funtzio honi zenbat kolore behar ditugun pasatzen diogu eta funtzioak kolore bektore bat itzultzen digu. Paletak sortzeko beste hainbat funtzio daude: hsv, hcl, gray, heat.colors eta topo.colors