Как убрать границы на графике usmap
Я пытаюсь сделать карту выборов в США на основе пакета usmap. Дело в том, что пакет может делать только белый фон. Если бы я изменил цвет фона, были бы видны границы. Пытался убрать границы, установивpanel.border = element_blank()
но, похоже, это не сработало. Есть ли способ решить эту проблему?
library(usmap)
poll <- read_csv('poll.csv')
poll$fips <-fips(poll$State)
poll$Attitude <- factor(poll$Attitude, levels = attitude)
plot2 <- plot_usmap(data = poll, values = "Attitude", color = 'white', labels=FALSE) + scale_fill_manual(values=c("#1055b6", "#67b5e2", "#cccccc","#ffaca3","#ed4748")) + guides(fill = FALSE)
plot2+ theme(plot.background = element_rect(fill = "#fdf1e5"),
panel.background = element_rect(fill = "#fdf1e5"),
panel.border = element_blank())
Вот мои данные.
State Abbrev Code n_votes Attitude fips
1 Alabama Ala. AL 9 Solid Republican 01
2 Alaska Alaska AK 3 Toss-up 02
3 Arizona Ariz. AZ 11 Toss-up 04
4 Arkansas Ark. AR 6 Solid Republican 05
5 California Calif. CA 55 Solid Democrat 06
6 Colorado Colo. CO 9 Leaning to Democrat 08
7 Connecticut Conn. CT 7 Solid Democrat 09
8 Delaware Del. DE 3 Solid Democrat 10
9 District of Columbia D.C. DC 3 Solid Democrat 11
10 Florida Fla. FL 29 Leaning to Democrat 12
11 Georgia Ga. GA 16 Toss-up 13
12 Hawaii Hawaii HI 4 Solid Democrat 15
13 Idaho Idaho ID 4 Solid Republican 16
14 Illinois Ill. IL 20 Solid Democrat 17
15 Indiana Ind. IN 11 Leaning to Republican 18
16 Iowa Iowa IA 6 Leaning to Republican 19
17 Kansas Kans. KS 6 Leaning to Republican 20
18 Kentucky Ky. KY 8 Solid Republican 21
19 Louisiana La. LA 8 Solid Republican 22
20 Maine Maine ME 2 Solid Democrat 23
21 Maryland Md. MD 10 Solid Democrat 24
22 Massachusetts Mass. MA 11 Solid Democrat 25
23 Michigan Mich. MI 16 Leaning to Democrat 26
24 Minnesota Minn. MN 10 Toss-up 27
25 Mississippi Miss. MS 6 Solid Republican 28
26 Missouri Mo. MO 10 Leaning to Republican 29
27 Montana Mont. MT 3 Solid Republican 30
28 Nebraska Nebr. NE 2 Solid Republican 31
29 Nevada Nev. NV 6 Leaning to Democrat 32
30 New Hampshire N.H. NH 4 Leaning to Democrat 33
31 New Jersey N.J. NJ 14 Solid Democrat 34
32 New Mexico N.M. NM 5 Solid Democrat 35
33 New York N.Y. NY 29 Solid Democrat 36
34 North Carolina N.C. NC 15 Toss-up 37
35 North Dakota N.D. ND 3 Solid Republican 38
36 Ohio Ohio OH 18 Toss-up 39
37 Oklahoma Okla. OK 7 Solid Republican 40
38 Oregon Ore. OR 7 Solid Democrat 41
39 Pennsylvania Pa. PA 20 Leaning to Democrat 42
40 Rhode Island R.I. RI 4 Solid Democrat 44
41 South Carolina S.C. SC 9 Toss-up 45
42 South Dakota S.D. SD 3 Solid Republican 46
43 Tennessee Tenn. TN 11 Solid Republican 47
44 Texas Tex. TX 38 Toss-up 48
45 Utah Utah UT 6 Leaning to Republican 49
46 Vermont Vt. VT 3 Solid Democrat 50
47 Virginia Va. VA 13 Leaning to Democrat 51
48 Washington Wash. WA 12 Solid Democrat 53
49 West Virginia W.Va. WV 5 Solid Republican 54
50 Wisconsin Wis. WI 10 Leaning to Democrat 55
51 Wyoming Wyo. WY 3 Solid Republican 56
Спасибо
Дэн
1 ответ
Элемент темы panel.border
наследуется от panel.background
прямоугольный объект. В вашем коде он перезаписывается вашим объектом rect дляpanel.background
. Вашpanel.background
элемент только указывает fill=
, так color=
(цвет рамки вокруг панели) по умолчанию установлен на "black"
. Если вы хотите указать цвет границы дляpanel.background
, вы должны сделать это внутри element_rect
для этого объекта. Например, это удалит границу вашей панели (но сохранит границу графика):
plot2+ theme(plot.background = element_rect(fill = "#fdf1e5"),
panel.background = element_rect(color=NA, fill = "#fdf1e5"))
Так же plot.background
- это весь график, который включает область построения и все вокруг, например метки осей, текст и т. д. panel.background
- это область рисования самого сюжета: именно здесь нарисованы все точки на графике. Вы, несомненно, уже поняли, что внутренняя коробка - этоpanel.background
а "внешнее" поле - это plot.background
. Если вы укажете толькоplot.background
, то указывать panel.background
.
В качестве примера следующий результат дает тот же результат (удаление panel.background
объект целиком):
plot2+ theme(plot.background = element_rect(fill = "#fdf1e5"))
Мне не удалось заставить ваш фрейм данных работать точно (без большой работы по импорту), поэтому вы можете наблюдать эффект, используя встроенные данные о населении из usmap
пакет:
plot_usmap(data=statepop, values="pop_2015", color='white', labels=FALSE) + guides(fill=FALSE) +
theme(plot.background = element_rect(fill = "#fdf1e5"))
Да, и если вы хотите удалить все границы (а не только внутреннюю), вы должны указать это прямо вplot.background
элемент таким же образом:
theme(plot.background = element_rect(color = NA, fill = "#fdf1e5"))