我正在使用ggplot2
创建一个棒棒糖图表,比较美国大学学费和家庭收入中位数(适用于所有种族,特别适用于黑人家庭).为了让图表更容易阅读,我想将家庭收入的两个条的线宽和点大小设置为1.3和5,而将其他条(学费和费用)的线宽和点大小设置为0.7和2.然而,出于某种原因,R将我的参数应用于黑人家庭和佛罗里达大学(见图),而不是将它们应用于这两个收入标准,但我不知道如何修复它.
此外,我设置的x和y标签不会应用于图形.相反,左上角有一个小小的namerank
徘徊,右下角有一个y
徘徊.我也不知道如何让他们离开.
这是我的代码:
clg_fee|>
arrange(costatt)|>
mutate(namerank = factor(namerank, namerank))|>
ggplot() +
geom_segment(
aes(x=namerank,
xend=namerank,
y=0,
yend=costatt,
color = ifelse(namerank %in% c("Real Median Household Income (2022)",
"Real Median Household Income (Black, 2022)"),
"Median Household Income","Cost of Attendance (out-of-state)")),
linewidth = ifelse(clg_fee$namerank %in% c("Real Median Household Income (2022)",
"Real Median Household Income (Black, 2022)"),
1.3,0.7) #cost of attendance and income
)+
geom_segment(
aes(x=namerank,
xend=namerank,
y=0,
yend=out_state,
color = "Tuition (out-of-state)"),
linewidth = 0.7 #out_state tuition
)+
geom_point(aes(x = namerank,
y=out_state,
color="Tuition (out-of-state)"),
size = 2)+ #out_state tuition
geom_point(aes(x = namerank, y = costatt,
color = ifelse(namerank %in% c("Real Median Household Income (2022)",
"Real Median Household Income (Black, 2022)"),
"Median Household Income","Cost of Attendance (out-of-state)")),
size = ifelse(clg_fee$namerank %in% c("Real Median Household Income (2022)",
"Real Median Household Income (Black, 2022)"),
5, 2))+ #cost of attendance and income
geom_segment(
aes(x=namerank,
xend=namerank,
y=0,
yend=in_state,
color = "Tuition (in-state)"),
linewidth = 0.7 #in_state
)+
geom_point(aes(x = namerank, y=in_state, color = "Tuition (in-state)"), size = 2)+ #in_state
coord_flip() +
scale_y_continuous(labels = scales::label_number(scale_cut = scales::cut_short_scale(), suffix = "$"))+
scale_color_manual(
values = c(
"Tuition (out-of-state)" = "#779ECB",
"Tuition (in-state)" = "#77DD77",
"Median Household Income" = "orange",
"Cost of Attendance (out-of-state)" = "#757575"
)
)+
theme_ipsum()+
theme(legend.position = "top")+
labs(
xlab = "",
ylab = "Undergraduate costs and tuition",
color = "",
title = "University costs are far from affordable",
caption = "Tuition fees source: Visual Capitalist
Note that in-state tuition data is unavailable for most universities \n
Cost of attendance source: University websites
Note that official estimations of cost of attendance are unavailable for Boston College and Northeastern"
)
这是我的数据:
由于我想按降序对大学的出勤成本进行排名,并将家庭收入置于同一排名中,因此我将美国的收入中位数作为两行插入到收件箱中,并将收入值置于costatt
以下(代表出勤成本)
structure(list(namerank = c("Real Median Household Income (2022)",
"Real Median Household Income (Black, 2022)", "University of Southern California(Rank28)",
"Brown University(Rank9)", "Duke University(Rank7)", "University of Pennsylvania(Rank6)",
"Cornell University(Rank12)", "Northwestern University(Rank9)",
"University of Chicago(Rank12)", "Columbia University(Rank12)",
"Dartmouth College(Rank18)", "Georgetown University(Rank22)",
"Yale University(Rank5)", "Vanderbilt University(Rank18)", "Carnegie Mellon University(Rank24)",
"Johns Hopkins University(Rank9)", "California Institute of Technology(Rank7)",
"Washington University, St. Louis(Rank24)", "University of Notre Dame(Rank20)",
"Stanford University(Rank3)", "Emory University(Rank24)", "Massachusetts Institute of Technology(Rank2)",
"Princeton University(Rank1)", "Harvard University(Rank3)", "University of Virginia(Rank24)",
"Rice University(Rank17)", "University of Michigan, Ann Arbor(Rank21)",
"University of California, San Diego(Rank28)", "University of California, Berkeley(Rank15)",
"University of California, LA(Rank15)", "University of California, Davis(Rank28)",
"University of North Carolina at Chapel Hill(Rank22)", "University of Florida(Rank28)"
), rank = c(NA, NA, 28, 9, 7, 6, 12, 9, 12, 12, 18, 22, 5, 18,
24, 9, 7, 24, 20, 3, 24, 2, 1, 3, 24, 17, 21, 28, 15, 15, 28,
22, 28), school_name = c(NA, NA, "University of\r\r\r\nSouthern California",
"Brown University", "Duke University", "University of\r\r\r\nPennsylvania",
"Cornell University", "Northwestern University", "University of Chicago",
"Columbia University", "Dartmouth College", "Georgetown University",
"Yale University", "Vanderbilt University", "Carnegie Mellon University",
"Johns Hopkins\r\r\r\nUniversity", "California Institute\r\r\r\nof Technology",
"Washington\r\r\r\nUniversity, St. Louis", "University of Notre Dame",
"Stanford University", "Emory University", "Massachusetts\r\r\r\nInstitute of\r\r\r\nTechnology",
"Princeton University", "Harvard University", "University of Virginia",
"Rice University", "University of\r\r\r\nMichigan, Ann Arbor",
"University of\r\r\r\nCalifornia, San Diego", "University of\r\r\r\nCalifornia, Berkeley",
"University of\r\r\r\nCalifornia, LA", "University of\r\r\r\nCalifornia, Davis",
"University of North\r\r\r\nCarolina at Chapel Hill", "University of Florida"
), state = c(NA, NA, "California", "Rhode Island", "North Carolina",
"Pennsylvania", "New York", "Illinois", "Illinois", "New York",
"New Hampshire", "Washington, DC", "Connecticut", "Tennessee",
"Pennsylvania", "Maryland", "California", "Missouri", "Indiana",
"California", "Georgia", "Massachusetts", "New Jersey", "Massachusetts",
"Virginia", "Texas", "Michigan", "California", "California",
"California", "California", "North Carolina", "Florida"), out_state = c(NA,
NA, 68237, 68230, 66172, 66104, 66014, 65997, 65619, 65524, 65511,
65082, 64700, 63946, 63829, 63340, 63255, 62982, 62693, 62484,
60774, 60156, 59710, 59076, 58950, 58128, 57273, 48630, 48465,
46326, 46043, 39338, 28658), in_state = c(NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 22323, NA, 17786, 16056, 15891, 13752, 15266, 8998,
6381), costatt = c(74580, 52860, 95225, 91676, 88938, 92228,
83296, 91290, 89040, 88942, 91312, 88782, 90975, 89590, 73000,
86065, 80028, 87644, 86125, 92892, 88414, 82720, 86700, 91166,
91440, 86279, 76294, 77886, 78582, 67959, 78996, 66372, 45808
)), class = "data.frame", row.names = c(NA, -33L))
一开始我没有linewidth
或size
个论点,情节是毫无问题地创建的.在我添加参数后,R开始警告我,即使我彻底判断了我的管道,也找不到namerank
.我在我的规模论点中添加了clg_fee$
--因此是size = ifelse(clg_fee$namerank etc. etc.)
,它解决了这个问题,但现在我有黑人家庭的中位数收入,佛罗里达大学强调了这两个标准,而不是中位数收入.
对于标签,我try 在标签参数中设置xlab = NULL
,但这不起作用.