2016-11-01 2 views
1

Ich habe ein SpatialPolygonsDataFrame mit Spalten, die Hex-Farbwerte enthalten. Ich mag die Karte wie dies mit dem Paket tmap zeichnen:Spalte mit Farbwerten in Tmap

tm_shape(full.shp) + tm_fill(col="konf1900") 

Aber dann wird es als kategorialer Variable behandelt, in dem resultierenden: screenshot 2016-11-01 10 15 53

Ich bin nicht sicher, wie tmap zu sagen, dass es sein solle Zeichne die Farbwerte direkt auf der Karte ...

Kann mir jemand weiterhelfen?

edit: sehen die Antworten unten - das Problem war, dass der Datenrahmen Spalte keine codierten as.character war. Ich denke, das jemand irgendwann helfen könnte ...

+0

Apperently, die 'konf1900' variable Farbwerte enthält. In einem solchen Fall verwendet "tm_fill" diese Werte, um die Polygone zu füllen. Soweit ich sehen kann, ist dies in Ihrer Handlung der Fall. Es ist mir daher nicht klar, um was für ein Problem es sich handelt. – Jaap

+0

nein, leider verwendet es nicht die Farbwerte für die Füllung - vergleiche zum Beispiel den ersten Legendeneintrag: # 08306B sollte das dunkelblau sein, nicht grün. Außerdem kann ich die Farbe mit dem Befehl palette ändern, was bei Farbwerten nicht der Fall sein sollte. Es behandelt die Variable als kategoriale Variable. – Mario

Antwort

2

Offenbar ist das Problem der Typ der Spalte war:

full.shp$konf1900char <- as.character(full.shp$konf1900) 
tm_shape(full.shp) + tm_fill(col="konf1900char") 

Es mit as.character in Zeichen umgewandelt werden muss. Außerdem ist es wichtig, dass es keine Werte NA, können sie auf weiß (#ffffff in Hex-Format) umgewandelt werden:

full.shp$konf1900char[is.na(full.shp$konf1900char)] <- "#ffffff" 

mit diesen Transformationen, es funktioniert gut mit tmap und tm_fill nimmt die Farbwerte aus Die Variable.

edit:
dies ist das sich ergebende Bild (vergleiche in der betreffenden Abbildung oben): enter image description here

0
library(tmap) 

#Load in some example data 
data(Europe) 

#Create a dataframe with all a column containing country ID and another with an assigned color: 
region_col <- data.frame(
    iso_a3 = Europe$iso_a3, 
    mycolors = c(rep("#94b8b8",68)), #Assign the same color to all regions initilally 
    stringsAsFactors = FALSE 
) 

#Highlight some selected regions by looking up the 3 letter iso_a3 code and changing the 
#associated hexidecimal color reference: 
region_col$mycolors[region_col$iso_a3 == "GBR"] <- "#00ff00" 
region_col$mycolors[region_col$iso_a3 == "FRA"] <- "#ff0000" 
region_col$mycolors[region_col$iso_a3 == "DEU"] <- "#ffff00" 
region_col$mycolors[region_col$iso_a3 == "ESP"] <- "#0000ff" 

#Import color selection from region_col dataframe into Europe SpatialPolygonDataFrame 
Europe$color <- region_col$mycolors 

#Plot resultant map: 
qtm(Europe, fill = "color") 

enter image description here

Verwandte Themen