Jekyll是一个用Ruby编写的静态站点生成器,支持博客并与Github页面整合。因为Github只负责托管,这种设置使数据分析共享和可视化变得简单。Jekyll提供了各种主题和插件,因此用户无需担心Web开发。
本指南将指导您完成安装Jekyll的过程,并将其配置为从Jupyter笔记本显示多种输出类型。
sudo
。完成“ 保护您的服务器”的相应部分以创建标准用户帐户。sudo apt update && sudo apt upgrade
sudo apt install gcc make
安装Ruby版本管理器(RVM)。建议使用RVM有以下几个原因:
sudo
software-properties-common
软件包是添加新PPA的便捷方式:
sudo apt install software-properties-common
sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update && sudo apt install rvm
Creating group 'rvm' Installing RVM to /usr/share/rvm/ Installation of RVM in /usr/share/rvm/ is almost complete: \* First you need to add all users that will be using rvm to 'rvm' group, and logout - login again, anyone using rvm will be operating with "umask u=rwx,g=rwx,o=rx". \* To start using RVM you need to run "source /etc/profile.d/rvm.sh" in all your open shell windows, in rare cases you need to reopen all shell windows.
rvm install ruby
gem
下载jekyll和Bundler:
gem install jekyll bundler
exampleblog
:
jekyll new exampleblog
exampleblog
目录。虽然Jekyll已经有了博客框架,还是需要创建一个assets
文件夹来存储图像,CSS和JS文件。
cd exampleblog mkdir -p assets/images
目录树类似于:
exampleblog/ ├── 404.html ├── about.md ├── assets │ └── images ├── \_config.yml ├── Gemfile ├── Gemfile.lock ├── index.md └── \_posts └── 2017-10-10-welcome-to-jekyll.markdown
4000
)来预览站点。网站上应该有一篇默认的文章。
bundle exec jekyll serve --host=0.0.0.0
注意启动Jekyll服务器后,会有一个新_site
文件夹。由于每次对站点进行更改时它会重建,所以不要将文件存储在此文件夹中。
如果您的系统上尚未安装带有Jupyter的Anaconda,本节将指导您完成设置笔记本的过程,该笔记本将提供模板输出,然后可以将其导出到您的Jekyll博客。
本节中的步骤可以从本地计算机或使用Jekyll博客的Linode完成。如果您使用Linode,则可以使用ngrok查看笔记本。
curl -O https://repo.continuum.io/archive/Anaconda3-5.0.0.1-Linux-x86\_64.sh bash Anaconda3-5.0.0.1-Linux-x86\_64.sh
按照提示在系统上安装Anaconda。data-notebooks
为合适的环境名称:
conda create --name data-notebooks source activate data-notebooks
jupyter notebook
本节演示了Jupyter笔记本的一些常见功能,可以在Jekyll博客上显示HTML。这里介绍的Jupyter Notebook单元有四种类型的输出:Markdown格式的MathJex和LaTeX,HTML表格,控制台输出和使用绘图功能的图形。Iris数据集将用作生成本指南中输出的示例。
1.打开感兴趣的笔记本,或使用下面的代码创建示例笔记本。运行所有相关单元格,以便在页面上显示你想要在Jekyll博客上显示的内容。导航到File > Download As > Markdown (.md)
。markdown文件将保存到浏览器默认的Downloads
文件夹中。
或者直接可以从命令行完成。为了创建example_notebook.md
,图形保存在单独的example_notebook_files
文件夹中。
jupyter nbconvert --to markdown /path/to/example\_notebook.ipynb
2.本指南中使用的演示代码如下:
example.ipynb 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20\begin{equation\*} \mathbf{V}\_1 \times \mathbf{V}\_2 = \begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \ \frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \ \frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0 \end{vmatrix} \end{equation\*} import pandas as pd import seaborn as sns %matplotlib inline url=https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data" names = 'sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class' iris = pd.read\_csv(url, names=names) iris.head() iris.describe() sns.pairplot(x\_vars="petal-length",y\_vars="petal-width", data=iris, hue="class", size=10)
3.在Jekyll项目的_posts
文件夹中,创建一个新的名为YYYY-MM-DD-example-post.md
的文件。如果日期格式不正确,帖子可能不会出现在博客上:
touch YYYY-MM-DD-example-post.md
4.markdown文件应以三个破折号开头并包含标题,这些标题为Jekyll提供了适当的页面数据以便填充帖子的信息。日期必须采用指定的格式。小时,分钟,秒和时区的调整是可选的:
YYYY-MM-DD-example-post.md1 2 3 4 5 6 7
--- layout: post title: "Awesome Data Visualization" date: 2017-10-10 12:07:25 +0000 categories: - data ---
5.把Jupyter导出的markdown文件内容复制到新帖子中。
使用命令行执行此操作:
cat example\_notebook.md | tee -a exampleblog/\_posts/YYYY-MM-DD-example-post.md
如果您在浏览器中导航到Jekyll博客,您应该会看到指向新帖子的标题链接(示例中为“超赞的数据可视化”)。但是您可能会注意到大部分输出格式不正确。根据帖子内容可能需要转义字符。有关转义字符和格式化块的更多信息,请参阅Jekyll文档。
以下部分显示如何通过调整并设置表格和图像样式以改进显示。
Jupyter中的表格输出转换为HTML表格。本节介绍如何通过扩展主题SCSS以便对表格进行样式化。
1.在/exampleblog/assets
文件夹中创建一个名为main.scss
的新文件。导入现有的最小SCSS主题并添加以下内容:
main.scss 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
--- --- @import "minima"; p, blockquote, ul, ol, dl, li, table, pre { margin: 15px 0; } table { padding: 0; } table tr { border-top: 1px solid #cccccc; background-color: white; margin: 0; padding: 0; } table tr:nth-child(2n) { background-color: #f8f8f8; } table tr th { font-weight: bold; border: 1px solid #cccccc; text-align: left; margin: 0; padding: 6px 13px; } table tr td { border: 1px solid #cccccc; text-align: left; margin: 0; padding: 6px 13px; } table tr th :first-child, table tr td :first-child { margin-top: 0; } table tr th :last-child, table tr td :last-child { margin-bottom: 0; }
2.HTML表格将使用新样式。
通过markdown添加图像需要将图像存储在项目目录中。
/assets/images
文件夹中。这只是一个例子。使用JavaScript库添加交互式图形超出了本指南的范围。
内容分发网络(CDN)是在网站上添加功能而无需下载其他软件的好方法。本节将介绍如何创建使用自定义标题的帖子。
1.为了让Jekyll将LaTeX转换为PNG,可以通过MathJax获得CDN。复制以下HTML标记并将其粘贴到以下元数据部分的下方YYYY-MM-DD-example-post.md
:
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML\\\_HTMLorMML" type="text/javascript"></script>
2.默认的Jekyll minima主题包含与gem一起打包的_layouts
和_includes
目录。通过以下方式导航到此目录:
cd $(bundle show minima)
目录树包含用于集成Disqus和Google Analytics的其他HTML文件。
minima-2.1.1/ ├── assets │ └── main.scss ├── \_includes │ ├── disqus\_comments.html │ ├── footer.html │ ├── google-analytics.html │ ├── header.html │ ├── head.html │ ├── icon-github.html │ ├── icon-github.svg │ ├── icon-twitter.html │ ├── icon-twitter.svg │ └── scripts.html ├── \_layouts │ ├── default.html │ ├── home.html │ ├── page.html │ └── post.html ├── LICENSE.txt ├── README.md └── \_sass ├── minima │ ├── \_base.scss │ ├── \_layout.scss │ └── \_syntax-highlighting.scss └── minima.scss
注意默认主题作为gem安装。如果项目根目录中有另一个_layouts
或_includes
文件夹,那些HTML文件将覆盖该主题。
3.在minima主题的_includes
目录中,创建一个新的scripts.html
文件。使用Liquid模板,添加逻辑以检查帖子中的mathjax
标题:
\_includes / scripts.html1 2 3 4 5
{% if page.mathjax %} <script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML\\\\\\\\\\\\\_HTMLorMML"> </script> {% endif %}
4.添加模板到_layouts/post.html
以便在帖子中包含scripts.html
:
\_layouts / post.html1 2 3 4 5
--- layout: default --- {% include scripts.html %}
5.使用mathjax: true
编辑/exampleblog/_posts/YYYY-MM-DD-example-post.md
标题。使用 $$
包裹LaTeX以创建数学块。请记住包括两行---
:
YYYY-MM-DD-example-post.md 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
--- layout: post mathjax: true title: "Awesome Data Visualization" date: 2017-10-10 12:07:25 +0000 categories: data --- $$ \begin{equation\*} \mathbf{V}\_1 \times \mathbf{V}\_2 = \begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \ \frac{\partial X}{\partial u} & \frac{\partial Y}{\partial u} & 0 \ \frac{\partial X}{\partial v} & \frac{\partial Y}{\partial v} & 0 \end{vmatrix} \end{equation\*} $$
6.浏览器应使用MathJax显示与Jupyter Notebook一样的输出。
您或许需要访问以下资源来获取关于本主题的更多内容。在此提供以下链接希望有所帮助,但是不保证外部资料的准确性和时效性。