查看: 1593|回复: 3

Tikz画图

[复制链接]
论坛徽章:
29
JVM徽章
日期:2014-12-24 15:14:33机器学习徽章
日期:2015-12-15 10:38:29矩阵计算徽章
日期:2016-03-17 11:39:37数据展示徽章
日期:2016-06-23 11:26:11Java徽章
日期:2017-06-09 15:42:21R研习者高级
日期:2017-07-06 17:13:51R研习者初级
日期:2017-08-17 17:12:19linux徽章
日期:2017-11-23 17:01:23Excel徽章
日期:2017-11-30 15:59:07金融徽章
日期:2017-12-08 10:41:29Go徽章
日期:2017-12-25 17:16:30Keras徽章
日期:2018-05-31 17:03:28
发表于 2015-4-7 11:23 | 显示全部楼层 |阅读模式
Basic Drawing Using TikZ



To see the corresponding video for this blog post click here.

In the next few blog posts we’re going to show you some of the interesting things you can do using the TikZ package. The TikZ package is a package that allows you to draw high quality and often quite complex diagrams. In this post we’re going to show you some of the basics and show you how to draw simple shapes and lines.

To get started with TikZ we need to load up the TikZ package:

\usepackage{tikz}

Now whenever we want to create a TikZ diagram we need to use the ‘tikzpicture’ environment.

\begin{tikzpicture}<code goes here>\end{tikzpicture}Basic Shapes

One of the simplest and most commonly used commands in TikZ is the \drawcommand. To draw a straight line we use this command, then we enter a starting co-ordinate, followed by two dashes before the ending co-ordinate. We then finish the statement by closing it with a semicolon.

\draw (0,0) -- (4,0);

We can then add more co-ordinates in like this to make it a square:

\draw (0,0) -- (4,0) -- (4,4) -- (0,4) -- (0,0);


However this isn’t particularly good style. As we are drawing a line that ends up in the same place we started, it is better to finish the statement with the keyword ‘cycle’ rather than the last co-ordinate.

\draw (0,0) -- (4,0) -- (4,4) -- (0,4) -- cycle;

To simplify this code further we can use the ‘rectangle’ keyword after the starting co-ordinate and then follow it with the co-ordinate of the corner diagonally opposite.

\draw (0,0) rectangle (4,4);

We can also add lines that aren’t straight. For example, this is how we draw a parabola:

\draw (0,0) parabola (4,4);


To add a curved line we use ‘control points’. We begin with our starting co-ordinate, then use two dots followed by the keyword ‘controls’ and then the co-ordinates of our control points separated by an ‘and’. Then after two more dots we have the final point. These control points act like magnets attracting the line in their direction.

\draw (0,0) .. controls (0,4) and (4,0) .. (4,4);


We can then add a circle like this. The first co-ordinate is the circle’s centre and the length in brackets at the end is the circle’s radius.

\draw (2,2) circle (3cm);


This is how we draw an ellipse. This time the lengths in the brackets separated by an ‘and’, are the x-direction radius and the y-direction radius respectively.

\draw (2,2) ellipse (3cm and 1cm);


This is how we draw an arc. In the final bracket we enter the starting angle, the ending angle and the radius. This time they are separated by colons.

\draw (3,0) arc (0:75:3cm);

To customise the way these lines are drawn we add extra arguments into the\draw command. For example we can edit the circle we drew so that the line is red, thick and dashed.

\draw[red,thick,dashed] (2,2) circle (3cm);


Grids

Very often when drawing diagrams we will want to draw a grid. To do this we use the \draw command followed by by some additional arguments. For example we specify the grid step size using step= and a length. We’ve also specified the colour ‘gray’ and told it to make the lines ‘very thin’. After these arguments we enter the co-ordinates of the bottom left corner, followed by the keyword ‘grid’ and then the co-ordinates of the top right corner.

\draw[step=1cm,gray,very thin] (-2,-2) grid (6,6);


If we want to remove the outer lines around this grid we can crop the size slightly like this.

\draw[step=1cm,gray,very thin] (-1.9,-1.9) grid (5.9,5.9);


Colour Filling

Now lets add a shape onto our grid and colour it in. To do this we use the \fillcommand instead of the \draw command. Then in square brackets we enter a colour. For example this specifies a colour that is 40% blue mixed with 60% white. Then we just specify a closed shape as we would normally.

\fill[blue!40!white] (0,0) rectangle (4,4);


If we wanted to add a border around this shape we could change it to the\filldraw command and then alter the arguments so that we have both a fill colour and a draw colour specified.

\filldraw[fill=blue!40!white, draw=black] (0,0) rectangle (4,4);


If instead of one solid colour we want a colour gradient, we could change it to the \shade command. Then in the square brackets we specify a left colour and a right colour.

\shade[left color=blue,right color=red] (0,0) rectangle (4,4);


Instead of doing it from left to right we could do it from top to bottom.

\shade[top color=blue,bottom color=red] (0,0) rectangle (4,4);


Or we could even change it by specifying an inner and outer colour like this.

\shade[inner color=blue,outer color=red] (0,0) rectangle (4,4);


Finally we could also add a border to this by using the \shadedraw command and adding a draw colour.

\shadedraw[inner color=blue,outer color=red, draw=black] (0,0) rectangle (4,4);


Let’s finish this post by adding some labeled axes to our grid. To do this we draw two normal lines both from (0,0), but we’ll make them thick and add arrowheads using a dash and a pointed bracket.

\draw[thick,->] (0,0) -- (4.5,0);\draw[thick,->] (0,0) -- (0,4.5);


We can also label our axes using nodes. To do this we add the keyword ‘node’ into both draw statements next to the end co-ordinates, followed by an anchor specification in square brackets and the text in curly brackets. Every node we create in TikZ has a number of anchors. So when we specify the north west anchor for the x-axis node, we are telling TikZ to use the anchor in the top left hand corner to anchor the node to the co-ordinate.

\draw[thick,->] (0,0) -- (4.5,0) node[anchor=north west] {x axis};\draw[thick,->] (0,0) -- (0,4.5) node[anchor=south east] {y axis};


To finish our axes we can add in ticks and numbering like this:

\foreach \x in {0,1,2,3,4}    \draw (\x cm,1pt) -- (\x cm,-1pt) node[anchor=north] {$\x$};\foreach \y in {0,1,2,3,4}    \draw (1pt,\y cm) -- (-1pt,\y cm) node[anchor=east] {$\y$};


This clever piece of code uses two ‘for each’ loops to systematically go along the axes adding the ticks and numbers. In each one, the variable x or y takes on all of the numbers in the curly brackets, each in turn and executes the \draw command.

This concludes our discussion on basic drawing in TikZ. If you want to play around with the document we created in this post you can access it here. In the next post we’ll look exporting TikZ code from GeoGebra. Please do keep in touch with us via Facebook, Twitter & Google+.


回复

使用道具 举报

论坛徽章:
29
JVM徽章
日期:2014-12-24 15:14:33机器学习徽章
日期:2015-12-15 10:38:29矩阵计算徽章
日期:2016-03-17 11:39:37数据展示徽章
日期:2016-06-23 11:26:11Java徽章
日期:2017-06-09 15:42:21R研习者高级
日期:2017-07-06 17:13:51R研习者初级
日期:2017-08-17 17:12:19linux徽章
日期:2017-11-23 17:01:23Excel徽章
日期:2017-11-30 15:59:07金融徽章
日期:2017-12-08 10:41:29Go徽章
日期:2017-12-25 17:16:30Keras徽章
日期:2018-05-31 17:03:28
 楼主| 发表于 2015-4-7 11:31 | 显示全部楼层
不错的包,有进一步的资料就更好了。
回复 支持 反对

使用道具 举报

论坛徽章:
0
发表于 2016-3-10 16:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

论坛徽章:
44
Puppet徽章
日期:2016-09-08 10:53:41搜索引擎徽章
日期:2018-05-24 16:11:27Java徽章
日期:2018-05-17 15:59:29spark徽章
日期:2018-05-03 15:46:21pyspark徽章
日期:2018-04-08 16:26:32计算徽章
日期:2018-03-19 15:04:30Java徽章
日期:2018-03-01 16:42:33Git徽章
日期:2017-12-25 17:36:00高并发架构徽章
日期:2017-12-07 16:06:15Tomcat徽章
日期:2017-11-16 17:41:49Hive徽章
日期:2017-11-09 17:11:46Hadoop研习者中级
日期:2017-09-19 10:59:42
发表于 2017-5-22 10:37 | 显示全部楼层
谢谢楼主分享,学习一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2018-9-26 23:06 , Processed in 0.115025 second(s), 37 queries .