以下最小示例将问题重现到较小程度......我注意到失真取决于堆叠的数据量,而如果没有堆叠数据,则没有混叠/失真。 y轴刻度文本不会仅影响x轴刻度文本。 x轴刻度文本之间的颜色/粗度差异也非常明显。
library(ggplot2)
x <- c(1111, 2222, 3333, 1111, 1111, 3333, 3333, 1111, 3333, 1111, 2222, 1111, 3333, 1111, 1111)
y <- c(11, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13, 12, 13)
z <- c('a', 'b', 'c', 'a', 'b', 'a', 'b', 'c', 'a', 'a', 'b', 'c', 'a', 'c', 'a')
df <- data.frame(x, y, z)
g <- ggplot(data=df, aes(x, y, fill=z)) +
geom_bar(stat="identity") + scale_x_continuous(breaks=df$x)
g
然后我得到3333轴有些混淆/扭曲,明显比1111和2222更暗:
有没有办法对情节进行后处理并修复它?
我尝试过没有成功:
library(extrafont)
ggsave(filename='myplot.pdf', plot=g)
embed_fonts('myplot.pdf')
更新:如果我从breaks=df$x
移除scale_x_continuous(breaks=df$x)
,那么失真就会消失......但我需要休息,否则它不会总是显示每个x轴刻度我需要它。
任何想法如何解决这个问题并保持所有休息而不失真?
答案 0 :(得分:2)
每次数据发生时,您的休息时间都会相互叠加。这会造成你看到的“失真”。使用unique(df$x)
代替df$x
作为休息时间轻松解决问题。