- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图复制这个
chart来自《经济学人》(左侧)。该图表在左侧 y 轴上绘制了俄罗斯的亿万富翁数量,在右侧绘制了世界其他地区的亿万富翁数量。
p1
)。 p2
)。 p1
和 p2
使用 Kohske 的代码进入双 y 轴图表. billionaire.csv
的内容)
,Russia,World
1996,0,423
1997,4,220
1998,1,221
1999,0,298
2000,0,322
2001,8,530
2002,6,466
2003,17,459
2004,25,562
2005,27,664
2006,33,760
2007,53,893
2008,87,1038
2009,32,761
2010,62,949
2011,101,1109
2012,96,1130
2013,110,1317
2014,111,1535
2015,88,1738
library(ggplot2)
library(gtable)
library(grid)
library(extrafont) # for Officiana font
dat <- read.csv("billionaire.csv")
rus <- dat[,1:2]
world <- dat[,-2]
grid.newpage()
p1 <- ggplot(rus, aes(X, Russia)) + geom_line(colour = "#68382C", size = 1.5) + ggtitle("Number in Russia") +
ylim(0, 200) + labs(x="",y="") +
theme(#plot.margin = unit(c(2,1,0,0), "cm"),
panel.grid.minor = element_blank(),
panel.grid.major = element_line(color = "gray50", size = 0.5),
panel.grid.major.x = element_blank(),
text=element_text(family="ITCOfficinaSans LT Book"),
axis.text.y = element_text(colour="#68382C", size = 14),
axis.text.x = element_text(size = 14),
axis.ticks = element_line(colour = 'gray50'),
plot.title = element_text(hjust = -0.17, vjust=2.12, colour="#68382C", size = 14, family = "ITCOfficinaSans LT Bold"))
p2 <- ggplot(world, aes(X, World)) + geom_line(colour = "#00a4e6", size = 1.5) + #ggtitle("Rest of world") +
ylim(0, 2000) + labs(x="",y="") +
theme(#plot.margin = unit(c(2,1,0,0), "cm"),
panel.grid.minor = element_blank(),
panel.grid.major = element_blank(),
text = element_text(family="ITCOfficinaSans LT Book"),
axis.text.y = element_text(colour="#00a4e6", size=14),
axis.text.x = element_text(size=14),
axis.ticks = element_blank(),
plot.title = element_text(hjust = 0.2, vjust=2.12, colour="#00a4e6", size = 14, family = "ITCOfficinaSans LT Bold"))
# Combining p1 and p2
g1 <- ggplot_gtable(ggplot_build(p1))
g2 <- ggplot_gtable(ggplot_build(p2))
pp <- c(subset(g1$layout, name == "panel", se = t:r))
g <- gtable_add_grob(g1, g2$grobs[[which(g2$layout$name == "panel")]], pp$t,
pp$l, pp$b, pp$l)
ia <- which(g2$layout$name == "axis-l")
ga <- g2$grobs[[ia]]
ax <- ga$children[[2]]
ax$widths <- rev(ax$widths)
ax$grobs <- rev(ax$grobs)
g <- gtable_add_cols(g, g2$widths[g2$layout[ia, ]$l], length(g$widths) - 1)
g <- gtable_add_grob(g, ax, pp$t, length(g$widths) - 1, pp$b)
ggsave("plot.pdf",g, width=5, height=5)
ggtitle
中。 .但是在步骤 3 中将图表组合在一起后,标题为
p2
丢失了,所以这就是我所得到的
g$grobs[[8]]$children$GRID.text.526$label <- c("Number in Russia", "Rest of World")
g$grobs[[8]]$children$GRID.text.526$gp$col <- c("#68382C","#00a4e6")
g$grobs[[8]]$children$GRID.text.526$x <- unit(c(-0.175, 0.774), "npc")
ggsave(...)
之前,这是结果:
最佳答案
这是使用 R 基础图形而不是 ggplot 的解决方案。我没有更改字体系列,因为它只能在安装了相同字体的系统之间移植(我这里没有 Officiana)。添加 family
很容易论据 mtext
这样做。
par(mar = c(3, 3, 3, 3), las = 1)
plot(tmp[,c(1,3)], type = 'n', axes = FALSE, ylim = c(0, 2000))
abline(h = c(0, 500, 1000, 1500, 2000), col = "grey")
points(tmp[,c(1,3)], type = 'l', col = "blue", lwd = 2)
points(x = tmp[,1], y = tmp[,2] * 10, type = 'l', col = "brown", lwd = 2)
axis(side = 4, at = c(0, 500, 1000, 1500, 2000), tick = FALSE,
col.axis = "blue", line = 1, hadj = 1)
axis(side = 2, at = c(0, 500, 1000, 1500, 2000), tick = FALSE,
col.axis = "brown", hadj = 1,
labels = c(0, 50, 100, 150, 200))
axis(side = 1, at = c(1996, 2000, 2005, 2010, 2015), lwd = 0, line = -1,
lwd.ticks = 2, col.ticks = "grey")
mtext("Number in Russia", side = 2, col = "brown", at = 2150, line = 2.5,
adj = 0)
mtext("Rest of World", side = 4, col = "blue", at = 2150, line = 2,
adj = 1)
关于用双轴重现 'The Economist' 图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37347115/
我试图复制这个 chart来自《经济学人》(左侧)。该图表在左侧 y 轴上绘制了俄罗斯的亿万富翁数量,在右侧绘制了世界其他地区的亿万富翁数量。 创建俄罗斯亿万富翁的图表 ( p1 )。 为其他人创建图
这个问题有两个部分,一个是一般性的,另一个是具体的案例: R 中是否有一个主题或模板来生成与“经济学人”杂志上发布的图表具有相似外观的图?其他上下文中的示例包括:Create "The Economi
如果您转到《经济学人》网站上的一篇文章。例如: http://www.economist.com/node/17629757 当您向下滚动页面超过某个点时(使用 PAGEDOWN 按钮或使用 DOWN
使用 python 和 marplotlib 以及像 seaborn 这样的工具,我想创建一个像经济学人这样的图表(因为我认为这种风格很棒。) 这是一个时间序列图,我想重现的关键是带有标签的水平网格线
我通过修改给定的示例创建了“经济学人”风格 here .但是,我想让这个样式出现在 plt.style.use(your_style) 下。我在转换为所需格式时遇到问题。例如,这是我创建“经济学人”风
我是一名优秀的程序员,十分优秀!