【问题标题】:How to subset in ggplot?如何在ggplot中进行子集化?
【发布时间】:2016-05-25 15:29:16
【问题描述】:

我想从我的 ggplot Heatmap 中删除 y 轴上的“No Preference”和“Uncommitted”,但是子集不起作用,你知道可能的原因吗?

我的代码:

ggplot(subset(primary_results, candidate != c("No Preference", 
"Uncommitted"))) + 
geom_tile(aes(y = candidate, x = state_abbreviation, fill = fraction_votes))  
+ 
scale_fill_viridis(option = "plasma") +
theme_solarized_2() +
xlab("State") +
ylab("Candidate") +
guides(fill = guide_legend(title="Fraction Votes"))

我的 Heatmamp(注意,我仍然得到不需要的部分)

如果我尝试情节之外的子集,它也不起作用..

【问题讨论】:

  • subset 在ggplot2 中没有问题。问题可能出在您的数据中。能否提供一些数据(dput)?
  • !candidate %in% c("No Preference", "Uncommitted") 试试吧
  • 数据有一个小问题,如果你运行levels(primary_results$candidates)你会发现两个值都有一个尾随空格,你可以在@Mhairi的答案中添加空格或者运行@987654328 @ 变量。干杯
  • subset(primary_results, candidate %nin% c("No Preference", " Uncommitted")) 是另一种解决方案。正如@donlelek 所提到的,在 `Uncommitted` 之前有一个尾随空格,这是错误的来源。

标签: r ggplot2 subset


【解决方案1】:

问题在于您的子集。您已删除所有长度不等于两个字符向量 c("No Preference", "Uncommitted") 的候选。

我想你想要:

ggplot(subset(primary_results, !(candidate %in% c("No Preference", "Uncommitted")))) + 

【讨论】:

  • 谢谢,有道理,但还是不行,不知道为什么。数据可以在这里找到:kaggle.com/benhamner/2016-us-election,我正在使用primary_results.csv
  • 嗯,奇怪。这可能是因子变量的问题(尝试 stringsAsFactors = FALSE)。可以编辑问题以显示从读取文件到制作此图的最少代码吗?
猜你喜欢
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
  • 2015-05-02
  • 1970-01-01
  • 2020-06-28
  • 2014-11-17
  • 1970-01-01
  • 2023-03-10
相关资源
最近更新 更多