首页 > 解决方案 > 如何定制 R 绘图轴?

问题描述

我将以下数据存储在 CSV 文件中。

NodeID,pageRank
0,0.0327814931593
1,0.384378430034
2,0.342932804288
3,0.0390870921
4,0.0808856932345
5,0.0390870921

我已经阅读了 R 中的 CSV 文件并按pageRank降序排列了值。

data <- read.csv("pagerank.csv")
data <- data[order(-data$pageRank),]

下单后data看下图。

1 0.38437843
2 0.34293280
4 0.08088569
3 0.03908709
5 0.03908709
0 0.03278149

在上面的例子中,第一列表示NodeID(不按顺序排列),第二列表示pageRank(降序排列)。接下来,我使用以下命令绘制数据。

plot(data$pageRank, type="o", col="red", xlab="Node Rank", ylab="PageRank Value")

该图pageRank正确显示了 Y 轴(值)。但是,在 X 轴上,它显示的是连续数字 (0,1,2,3,4,5)。因此,我如何通过保持的降序NodeID在 X 轴(在 中可用)上绘制 (1,2,4,3,5,0) 而不是显示序号。我尝试了以下方法。但是,它不保持的降序。datapageRankpageRank

plot(data$NodeID, data$pageRank, type="o", col="red", xlab="NodeID", ylab="PageRank Value")

标签: r

解决方案


您可以fct_reorderforcats包装中使用来为您订购。另请参阅

library(magrittr)
library(tidyverse)
library(forcats)

txt <- "NodeID,pageRank
0,0.0327814931593
1,0.384378430034
2,0.342932804288
3,0.0390870921
4,0.0808856932345
5,0.0390870921"

df <- read_csv(txt)

# Convert NodeID column to factor first
df %<>% 
  mutate(NodeID = factor(NodeID))

# Plot
ggplot(df, aes(pageRank, fct_reorder(NodeID, pageRank))) +
  geom_point() +
  geom_segment(aes(y = NodeID, yend = NodeID, x = 0, xend = pageRank), color = "red") +
  scale_x_continuous(expand = c(0, 0)) +
  ylab("Node Rank") +
  xlab("PageRank Value") +
  theme_classic(base_size = 16)

ggplot(df, aes(y = pageRank, x = fct_reorder(NodeID, -pageRank))) +
  geom_line(group = 1, color = "red") +
  scale_y_continuous(expand = c(0, 0)) +
  xlab("Node Rank") +
  ylab("PageRank Value") +
  theme_classic(base_size = 16)

使用基础 R 图

df$NodeID <- factor(df$NodeID, levels = c("1", "2", "4", "3", "5", "0"))
plot(df$pageRank ~ df$NodeID, xlab = "Node Rank", ylab = "PageRank Value")

reprex 包(v0.2.0.9000)于 2018 年 8 月 8 日创建。


推荐阅读