Related
I am trying to plot a graph like this in Latex:
It turns out to be looking like this with out a line:
This is my tex file
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{center}
\begin{tikzpicture}
\begin{axis}[
axis lines = left,
ytick={0,0.25},
xtick={0,2,4,6,8,10},
height=5.5cm,
width=13cm,
xmax=10,
ymax=0.25,
ymin=0,
xmin=0,
xlabel = T,
ylabel = k,
]
\addplot [
domain=0:100,
samples=1000,
color=blue,
]
{0.001^(x/x+1) * (1+x)};
\addlegendentry{\(T=p^{\frac{k}{k+1}(k+1)}\)}
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}
Have I done any thing wrong? Thank you.
Simple math problem: (x/x+1) != (x/(x+1))
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.5}
\begin{document}
\begin{center}
\begin{tikzpicture}
\begin{axis}[
axis lines = left,
height=5.5cm,
width=13cm,
xlabel = T,
ylabel = k,
]
\addplot [
domain=0:10,
samples=100,
color=blue,
]
{ (1+x)*0.001^(x/(x+1)) };
\addlegendentry{\(T=p^{\frac{k}{k+1}}(k+1)\)}
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}
How can I get the bounding box coordinates for the pgfplot below? I need the coordiates in pgfplot space. (current axis.south west) and (current bounding box.south west), for example, do not give what I need. I'm expecting something like SW = (-7,-1.1), NE = (8.2,1.4), which would extend to the right beyond the red rectangle.
\documentclass[border=0pt,multi=my]{standalone}
\usepackage{amssymb,amsmath}
\usepackage[pass,paperheight=\maxdimen]{geometry}
\usepackage{graphicx}
\usepackage{epsfig}
\usepackage{xcolor}
\usepackage{pgf,tikz,pgfplots}
\usetikzlibrary{calc,shapes,positioning,fit,decorations,decorations.text,decorations.pathmorphing,backgrounds,patterns,arrows,arrows.meta}
\usepackage{ifthen}
\usepackage{pagecolor}
\tikzset{every picture/.style={line width=0.02cm}}
\begin{document}
\pagestyle{empty}
\begin{my}
\begin{tikzpicture}[tight background,background rectangle/.style={draw=none,fill=red!45},show background rectangle,scale=0.85]
\begin{axis}[
name=foo,
width=360pt,
height=210pt,
xmin=-7,
xmax=8,
ymin=-1.1,
ymax=1.4,
xtick={0},
xticklabels={$0$},
ytick={0},
yticklabels={$0$},
extra x ticks={-6.283185307,-4.71238898,-3.141592654,-1.570796327,0,1.570796327,3.141592654,4.71238898,6.283185307},
extra x tick labels={$-2\pi$,$-\frac{3\pi}{2}$,$-\pi$,$-\frac{\pi}{2}$,$0$,$\frac{\pi}{2}$,$\pi$,$\frac{3\pi}{2}$,$2\pi$},
extra x tick style={
xticklabel style={below right},
},
extra y ticks={-1,1},
extra y tick labels={$-1$,$1$},
extra y tick style={
yticklabel style={right,xshift=5pt},
},
axis x line=center,
axis y line=center]
\addplot[line width=0.0325cm, cyan!60!black, domain=-7:7, samples=200] {sin(deg(x))};
\node at (axis cs:8.1,-0.12) {$x$};
\node[anchor=west] at (axis cs:0.1,1.3) {$y$};
\end{axis}
\end{tikzpicture}
\end{my}
\end{document}
It sounds as if you are looking for \pgfplotspointgetnormalizedcoordinates{}
\documentclass[border=0pt,multi=my]{standalone}
\usepackage{amssymb,amsmath}
\usepackage[pass,paperheight=\maxdimen]{geometry}
\usepackage{graphicx}
\usepackage{epsfig}
\usepackage{xcolor}
\usepackage{pgf,tikz,pgfplots}
\usetikzlibrary{calc,shapes,positioning,fit,decorations,decorations.text,decorations.pathmorphing,backgrounds,patterns,arrows,arrows.meta}
\usepackage{ifthen}
\usepackage{pagecolor}
\tikzset{every picture/.style={line width=0.02cm}}
\begin{document}
\pagestyle{empty}
\begin{my}%
\begin{tikzpicture}[tight background,background rectangle/.style={draw=none,fill=red!45},show background rectangle,scale=0.85]
\begin{axis}[
name=foo,
width=360pt,
height=210pt,
xmin=-7,
xmax=8,
ymin=-1.1,
ymax=1.4,
xtick={0},
xticklabels={$0$},
ytick={0},
yticklabels={$0$},
extra x ticks={-6.283185307,-4.71238898,-3.141592654,-1.570796327,0,1.570796327,3.141592654,4.71238898,6.283185307},
extra x tick labels={$-2\pi$,$-\frac{3\pi}{2}$,$-\pi$,$-\frac{\pi}{2}$,$0$,$\frac{\pi}{2}$,$\pi$,$\frac{3\pi}{2}$,$2\pi$},
extra x tick style={
xticklabel style={below right},
},
extra y ticks={-1,1},
extra y tick labels={$-1$,$1$},
extra y tick style={
yticklabel style={right,xshift=5pt},
},
axis x line=center,
axis y line=center]
\addplot[line width=0.0325cm, cyan!60!black, domain=-7:7, samples=200] {sin(deg(x))};
\node (myx) at (axis cs:8.1,-0.12) {$x$};
\node[anchor=west] at (axis cs:0.1,1.3) {$y$};
\node[green] at (200,10) {
\pgfplotspointgetnormalizedcoordinates{(xticklabel cs:0)}
\pgfmathprintnumber{\pgfkeysvalueof{/data point/x}}
\pgfplotspointgetnormalizedcoordinates{(myx.east)}
\pgfmathprintnumber{\pgfkeysvalueof{/data point/x}}
\pgfplotspointgetnormalizedcoordinates{(yticklabel cs:0)}
\pgfmathprintnumber{\pgfkeysvalueof{/data point/y}}
\pgfplotspointgetnormalizedcoordinates{(yticklabel cs:1)}
\pgfmathprintnumber{\pgfkeysvalueof{/data point/y}}
};
\draw[green, ultra thick] (axis cs:-7,-1.1) rectangle (axis cs:8.41,1.4);
\end{axis}
\end{tikzpicture}%
\end{my}%
\end{document}
I am struggling with soft clipping a fill between when using a loglogaxis. The soft-clip domain seems to be completely off; i.e. setting soft clip={domain=1:1} yields the same result as no domain at all.
Yet a domain soft clip={domain=0:10000000000} results in a horizontal clip:
The pgfplots manual doesn't give an example for clipping on a loglogaxis, might it be it's simply not supported? If it is, can anyone point me on how to clip to soft clip={domain=3.7E4:5.5E5} ?
My MWE:
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{tikzpicture}
\def\xmin{1E4}
\def\xmax{1E7}
\begin{loglogaxis}[
xmin=\xmin,xmax=\xmax,
ymin=1E-2,ymax=1000,
xlabel={Re [-]},
small,
height=4cm,
width=15cm,
xtick={1E4,1E5,1E6,1E7},
extra x ticks={3.7E4,5.5E5},
extra x tick labels ={3.7E4,5.5E5},
extra x tick style={
tickwidth=\pgfkeysvalueof{/pgfplots/minor tick length},
tick label style={yshift=-0.5mm}
},
ytick={1E-2,1E-1,1,10},
yticklabels={,,1},
extra y ticks={1E-2,1E-1},
grid=major,
domain=1E4:1E7,
]
\def\D{1.4}
\def\yplus{30}
\addplot[name path = C,thick,domain=1E4:1E7] {\yplus/((1/2*(2*log10(x)-0.65)^(-2.3)*(x/\D)^2)^(1/2)/1000)};
\def\yplus{300}
\addplot[name path = D,thick,domain=1E4:1E7] {\yplus/((1/2*(2*log10(x)-0.65)^(-2.3)*(x/\D)^2)^(1/2)/1000)};
\addplot [gray!30] fill between[of=C and D, soft clip={domain=3.7E4:5.5E5}];
\end{loglogaxis}
\end{tikzpicture}%
\end{document}
You could use the following technique to clip it:
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\def\xmin{1E4}
\def\xmax{1E7}
\begin{loglogaxis}[
xmin=\xmin,xmax=\xmax,
ymin=1E-2,ymax=1000,
xlabel={Re [-]},
small,
height=4cm,
width=15cm,
xtick={1E4,1E5,1E6,1E7},
extra x ticks={3.7E4,5.5E5},
extra x tick labels ={3.7E4,5.5E5},
extra x tick style={
tickwidth=\pgfkeysvalueof{/pgfplots/minor tick length},
tick label style={yshift=-0.5mm}
},
ytick={1E-2,1E-1,1,10},
yticklabels={,,1},
extra y ticks={1E-2,1E-1},
grid=major,
domain=1E4:1E7,
]
\def\D{1.4}
\def\yplus{30}
\addplot[name path = C,thick,domain=1E4:1E7] {\yplus/((1/2*(2*log10(x)-0.65)^(-2.3)*(x/\D)^2)^(1/2)/1000)};
\def\yplus{300}
\addplot[name path = D,thick,domain=1E4:1E7] {\yplus/((1/2*(2*log10(x)-0.65)^(-2.3)*(x/\D)^2)^(1/2)/1000)};
\draw [
help lines,
name path=clippath]
(3.7E4,1E-2) rectangle (5.5E5,1E3);
\addplot [gray!30] fill between[of=C and D,soft clip={clippath}];
\end{loglogaxis}
\end{tikzpicture}%
\end{document}
How to draw this graph in LaTeX? I have used TikZ but I can't get it done exactly.
This is what I have tried so far:
\begin{tikzpicture}
\tkzInit[xmax=6,ymax=6,xmin=-6,ymin=-1]
\tkzAxeXY
\draw[thick] (6,3) -- (-4,5);
\filldraw[black] (6,3) circle (2pt) node[anchor=west] {A(6,3)};
\filldraw[black] (-4,5) circle (2pt) node[anchor=east] {B(-4,5)};
\end{tikzpicture}
Using regular pgfplots you could do the following: Draw the line with the points you choose and label them with nodes. Then draw the additional distance markers using \draw in the axis coordinate system (The concrete positions of all elements may have to be adjusted).
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\tiny
\begin{axis}[
width = 6cm,
height = 4cm,
ymajorgrids = true,
ymin=-1,
ymax=7,
xmin=-6,
xmax=6,
xtick distance=1,
ytick distance=1,
axis y line*=center,
axis x line*=center,
enlarge x limits=.12
]
\addplot+[sharp plot] coordinates {(6,3) (1,4) (-4,5) } node[below=1mm, pos=0] {A(6,3)}
node[pos=0.45,below=1mm] {P(x,y)}
node[pos=1,below=1mm] {B(-4,5)};
\draw[|-|] (axis cs:1.2,5) -- node [above, rotate=-10] {m=13} (axis cs:6.3,3.9);
\draw[|-|] (axis cs:-3.8,6) -- node [above, rotate=-10, pos=.3] {n=2} (axis cs:1.2,5);
\end{axis}
\end{tikzpicture}
\end{document}
Output:
I have three horizontal bar-charts that I created using both the Tikz package and PGF plots package in latex. I am using Overleaf. The three horizontal bar-charts look like the following:
Is there a way to nest these horizontal bar-charts in a row in a latex document? I need this in order to save space for a paper I am working on. So what I am looking for is this (note: this 2nd image is meant to illustrate what I am looking for exactly):
This is the set up currently:
\documentclass[10pt,journal,compsoc]{IEEEtran}
\usepackage{tabularx,booktabs}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{sfmath}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{algorithm, algorithmic}
\usepackage{makeidx}
\usepackage{soul}
\usepackage{color}
\usepackage{colortbl}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{amsthm,amssymb,amsmath}
\begin{document}
\pgfplotsset{width=5cm,compat=1.15}
\begin{center}
\begin{figure}[h]
\begin{tikzpicture}
\begin{axis}[title = \textbf{2016 Data-set Results: Parameters for a Successful game},
xbar,
y axis line style = { opacity = 0 },
axis x line = none,
tickwidth = 0pt,
ytick = data,
enlarge y limits = 0.05,
enlarge x limits = 0.02,
width=0.3\textwidth,
bar width=2mm,
symbolic y coords = {User Count, Critic Count, Critic Score, User Score, Platform, Genre, Rating},
nodes near coords,
]
\addplot coordinates { (100,User Count) (93,Critic Count) (57,Critic Score) (20,User Score) (10.5,Platform) (2.3,Genre) (4.52,Rating) };
\end{axis}
\end{tikzpicture}
\caption{Results for the 2016 Dataset on what parameters make a successful game.}
\end{figure}
\end{center}
\pgfplotsset{width=5cm,compat=1.15}
\begin{center}
\begin{figure}[h]
\begin{tikzpicture}
\begin{axis}[title = \textbf{2017 Data-set Results: Parameters for a Successful game},
xbar,
y axis line style = { opacity = 0 },
axis x line = none,
tickwidth = 0pt,
ytick = data,
enlarge y limits = 0.05,
enlarge x limits = 0.02,
width=0.3\textwidth,
bar width=2mm,
symbolic y coords = {User Count, Critic Count, Critic Score, User Score, Platform, Genre, Rating},
nodes near coords,
]
\addplot coordinates { (100,User Count) (80,Critic Count) (56,Critic Score) (20,User Score) (8.47,Platform) (2.35,Genre) (3.675,Rating) };
\end{axis}
\end{tikzpicture}
\caption{Results for the 2017 Dataset on what parameters make a successful game.}
\end{figure}
\end{center}
\pgfplotsset{width=5cm,compat=1.15}
\begin{center}
\begin{figure}[h]
\begin{tikzpicture}
\begin{axis}[title = \textbf{2019 Data-set Results: Parameters for a Successful game},
xbar,
y axis line style = { opacity = 0 },
axis x line = none,
tickwidth = 0pt,
ytick = data,
enlarge y limits = 0.05,
enlarge x limits = 0.02,
width=0.3\textwidth,
bar width=2mm,
symbolic y coords = {User Count, Critic Count, Critic Score, User Score, Platform, Genre, Rating},
nodes near coords,
]
\addplot coordinates { (99.8,User Count) (73.6,Critic Count) (71.3,Critic Score) (21,User Score) (9.58,Platform) (2.35,Genre) (4,Rating) };
\end{axis}
\end{tikzpicture}
\caption{Results for the 2019 Dataset on what parameters make a successful game.}
\end{figure}
\end{center}
\end{document}