我使用 創建了一個條形圖ggplot2,但我的一些條形合并在一起。這是我使用的代碼:
library(ggplot2)
library(RColorBrewer)
bird_plot_error <- test %>%
group_by(bird) %>%
summarise(key = unique(dr),
dr = sum(dr)) %>%
group_by(bird) %>%
mutate(dr = dr/sum(dr) * key) %>%
ungroup %>%
mutate(bird = fct_reorder(bird, desc(bird))) %>%
ggplot(aes(x=bird, y=dr, fill="lightblue"))
geom_bar(stat="identity")
theme_classic()
theme(legend.position="none")
coord_flip()
scale_fill_brewer(palette="Paired")
ylim(0, 0.8)
bird_plot_error <- bird_plot_error ggtitle("Detection rate by bird")
xlab("Bird") ylab("Detection rate")
這是輸出:

為什么我的兩個條形合并在圖表的中心?有沒有辦法來解決這個問題?
uj5u.com熱心網友回復:
您的圖形設備無法在現有設定中以足夠的解析度/大小顯示,以正確指示所有這些條之間的間距。您的選擇是:
更改圖形輸出的解析度選項。 如果在 R Studio 中,您可能只能看到“縮放”版本的差異。
ggsave()例如,如果使用和保存 .png 檔案,您可以將 設定dpi=為更高的數字。將您的情節保存為“更高”。如果您使用 保存繪圖
ggsave(),則設定寬度和高度以拉伸事物以顯示更多間距。在您的圖中,將高度設定得越來越高,您應該會看到變化。設定條形的寬度,使它們更細。 您可以使用
width=的引數geom_bar()(這應該是geom_col(),BTW ...)。較小的數字將使條形更細,從而顯示它們之間的更多空白。重新思考你的情節。如果很難將所有資料完全整合到一個圖中……請考慮您使用的方法是否實際上是顯示繪圖資料的最佳方式。您是否希望有人使用此圖來比較第 10 個小節和最后第 7 個小節之間的差異?這么多條真的很難做到,所以……你想讓看到這個情節的人理解的總體事情是什么?重新聚焦并重新思考您的圖形,以確保它們清楚地顯示您的實驗結果。如果您想顯示所有條形,請考慮將它們分組的方法......或設定
width=1并強制它們全部“觸摸”。有很多選項取決于您的目標……對于 stackexchange 中的另一個站點來說,這可能是一個很好的問題。
祝你好運。這是一個可重現的示例資料集,其中包含一些圖片,向您展示如何利用上面的 1 和 2:
# reproducible example dataset and plot
library(ggplot2)
set.seed(8675309)
df <- data.frame(
mythings=paste(rep(LETTERS, each = 2), 1:2, sep='-'),
myvalues=sample(1:100, 26*2, replace=TRUE))
ggplot(df, aes(x=mythings, y=myvalues))
geom_col(fill='steelblue')
coord_flip()
下面是設定dpi=100眼色,喜歡width=5,和height=5我的PNG設備。根據您的圖形設定,您的里程可能會有所不同:
ggsave('a_plot_100_dpi.png', dpi=100, width=5, height=5)

請注意您如何將一些條合并在一起?當您將其拉伸得更高時(通過height=10),會發生以下情況:
ggsave('a_plot_100_dpi_taller.png', dpi=100, width=5, height=10)

線條不見了,但它真的很高。要保持相同的縱橫比,您可以嘗試更高的解析度。對于這個例子和我的設定,dpi=300似乎有效:
ggsave('a_plot_300_dpi.png', dpi=300, width=5, height=5)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364221.html
