
因此,有才能的人已经想出了如何在Mathematica,LaTeX,Python和R中制作xkcd样式图.
如何使用MATLAB生成如上图所示的图?
我创造了摇摆的线条,但我无法得到摇摆的轴.我想到的唯一解决方案是用摇摆的线覆盖它们,但我希望能够改变实际的轴.我也无法使幽默字体工作,使用的代码位是:
annotation('textbox',[left+left/8 top+0.65*top 0.05525 0.065],...
'String',{'EMBARRASSMENT'},...
'FontSize',24,...
'FontName','Humor',...
'FitBoxToText','off',...
'LineStyle','none');
Run Code Online (Sandbox Code Playgroud)
对于摇摆不定的线,我尝试添加一个小的随机噪声和平滑:
smooth(0.05*randn(size(x)),10)
Run Code Online (Sandbox Code Playgroud)
但是当它们交叉时,我无法使白色背景出现在它们周围......
有没有办法在 ggplot2 中沿着密度线放置文本,或者就此而言,沿着任何路径放置文本?我的意思是一次作为标签,采用这种 xkcd 风格:1835、1950(中间面板)、1392或2234(中间面板)。或者,有没有办法让该行重复文本,例如xkcd #930?我对所有 xkcd 表示歉意,我不确定这些样式叫什么,这是我能想到的唯一一个我以前见过的以这种方式区分区域的地方。
注意:我不是在谈论手绘的 xkcd 风格,也不是在顶部放置平面标签
我知道我可以放置一段笔直/平坦的文本,例如 viaannotate或geom_text,但我很好奇弯曲此类文本,使其看起来沿着数据的曲线。
我也很好奇这种文本风格有名字吗?
ggplot2 图表示例使用annotate(...):
上面的示例图在 Inkscape 中用弯曲文本修改:
编辑:根据要求,这是 3 月和 4 月前两次试运行的数据:
df <- data.frame(
monthly_run = c('March', 'March', 'March', 'March', 'March', 'March', 'March',
'March', 'March', 'March', 'March', 'March', 'March', 'March',
'April', 'April', 'April', 'April', 'April', 'April', 'April',
'April', 'April', 'April', 'April', 'April', 'April', 'April'),
duration = …Run Code Online (Sandbox Code Playgroud) 在我的研究中,我使用R生成各种图形.我看到大多数图形都提供了各种大小的Sans Serif类型字体.
如何将图形中的所有文本(x标签,y标签,标题,图例等)更改为统一字体,例如Times New Roman,12pt,Bold?
序言:我想从R创建出版级图形而不进行后处理.我所在研究所的其他研究人员总是在图形软件(如Adobe Illustrator)中进行后处理.我希望避免这种情况.
我的抱怨是R不对负数使用正确的减号(特别是在绘图轴上):
plot(-20:-1, rnorm(20) + 1 : 20)
Run Code Online (Sandbox Code Playgroud)

(我已经把犯罪者围了起来供你考虑.)
作为一个排版书呆子(这是真的!检查我的职业生涯简历!)这是不可接受的.我需要在这里使用正确的Unicode字符ᴍɪɴᴜꜱꜱɪɢɴ(U + 2212," - ").我的一个朋友在发布之前通过替换Adobe Illustrator中的所有减号来实现这一点,但我不禁认为必须有一种更好的方法 - 从R内部 - 来实现这一目标; 并且不会强迫我手动更换所有轴标签.
(我目前没有使用ggplot2,但如果有一个只适用于ggplot2的解决方案,我很乐意接受它.)
当尺寸不同时,我一直试图在 ggplot2 或网格中绘制线段之间具有相等间距的线。但是我没有成功,所以我向你寻求帮助。
在下面的示例中,如何在线条大小不同的情况下保持线段之间的绝对间距相等?
我想避免使用自定义makeContent.myclass方法来控制自己。
library(ggplot2)
library(grid)
df <- data.frame(
x = c(1:2, 1:2),
y = c(1:2, 2:1),
size = c(1,1,10,10)
)
# In ggplot2
ggplot(df, aes(x, y, size = size, group = size)) +
geom_line(linetype = 2)
Run Code Online (Sandbox Code Playgroud)

# In grid
lines <- polylineGrob(
x = scales::rescale(df$x),
y = scales::rescale(df$y),
id = c(1,1,2,2),
gp = gpar(lty = 2, lwd = c(1, 10))
)
grid.newpage(); grid.draw(lines)
Run Code Online (Sandbox Code Playgroud)

我想要类似于以下在 illustrator 中制作的东西。请注意,红线段的长度相等。
有任何想法吗?谢谢阅读!
我想创建图形,就像上一个主题的链接一样,但是收到错误:
在grid.Call(L_textBounds,as.graphicsAnnot(x $ label),x $ x,x $ y,:在Windows字体数据库中找不到字体系列
虽然安装fonts()了"Humor Sans"和"xksd"节目.我使用的是Windows 7 64bit,R 2.15.2 RStudio 0.96.331.
任何建议如何解决?
我可以自定义字体ggplot:
library(extrafont)\n\nwindowsFonts()\nfont_import(pattern = "comic", prompt = FALSE)\nloadfonts(device = "win")\nwindowsFonts()\n\nggplot(mapping=aes(x=seq(1,10,.1), y=seq(1,10,.1))) + \n geom_line(position="jitter", color="red", size=2) + theme_bw() +\n theme(text=element_text(size=16, family="Comic Sans MS"))\nRun Code Online (Sandbox Code Playgroud)\n\n这呈现为:
\n\n\n\n\n\n我还可以将该图和 extrafont 集成到一个闪亮的应用程序中,该应用程序在本地运行,如下所示:
\n\nlibrary(ggplot2)\nlibrary(extrafont)\nlibrary(shiny)\n\nfont_import(paths = "www", pattern = "comic", prompt = FALSE)\nloadfonts()\nprint(fonts())\n\nui <- fluidPage(plotOutput("plot"),textOutput("fonts"))\n\nserver <- function(input, output) {\n output$plot <- renderPlot({\n ggplot(mapping=aes(x=seq(1,10,.1), y=seq(1,10,.1))) + \n geom_line(position="jitter", color="red", size=2) + theme_bw() +\n theme(text=element_text(size=16, family="Comic Sans MS"))\n })\n output$fonts <- renderText(print(fonts()))\n}\n\nshinyApp(ui = ui, server = server)\n …Run Code Online (Sandbox Code Playgroud) 我按照小插图中给出的说明尝试使用 xkcd 字体: vignette("xkcd-intro")
但是在以下步骤中出现错误:
> system("cp xkcd.tff -t ~/.fonts")
cp: xkcd.tff: No such file or directory
cp: -t: No such file or directory
Run Code Online (Sandbox Code Playgroud)
该怎么办??