I am trying to make a stacked barplot aligned to the y-axis of the tikzpicture.
\begin{tikzpicture}
\begin{axis}[
ybar stacked,
bar width=15pt,
ymin=29,
nodes near coords,
enlargelimits=0.15,
legend style={at={(0.5,-0.15)},
anchor=north,legend columns=-1},
ylabel={Seconds (s)},
symbolic x coords={t1, t2, t3, t4},
xtick=data,
x tick label style={rotate=45,anchor=east},
]
\addplot+[ybar] plot coordinates {(t1, 143) (t2, 203) (t3, 174) (t4, 188)};
\addplot+[ybar] plot coordinates {(t1, 34) (t2, 36) (t3, 39) (t4, 35)};
\legend{\strut S1,\strut S2}
\end{axis}
\end{tikzpicture}
As seen, I have used ymin to force it being close to the y-axis but it does not look perfect. Also, I want to be able to automate this since I have a lot of figures that needs this configuration and doing it manually takes time.
With ymin=0 and without additional enlarging of this limit:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar stacked,
bar width=15pt,
ymin=0,
nodes near coords,
% enlargelimits=0.15,
legend style={at={(0.5,-0.15)},
anchor=north,legend columns=-1},
ylabel={Seconds (s)},
symbolic x coords={t1, t2, t3, t4},
xtick=data,
x tick label style={rotate=45,anchor=east},
]
\addplot+[ybar] plot coordinates {(t1, 143) (t2, 203) (t3, 174) (t4, 188)};
\addplot+[ybar] plot coordinates {(t1, 34) (t2, 36) (t3, 39) (t4, 35)};
\legend{\strut S1,\strut S2}
\end{axis}
\end{tikzpicture}
\end{document}
Related
In the following plot, I am getting a warning. I know it has to do something with the coordinates but can't solve it for sure. If anyone can guide me in the right direction, it would be really helpful.
Package pgf Warning: No path specified that can be filled on input
line 55.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{float}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\title{StackExchange}
\author{M. Tahasanul Ibrahim}
\date{January 2022}
\begin{document}
\begin{figure}[H]
\centering
\begin{tikzpicture}
\begin{axis}
[
% ybar,
% xmin=-1,xmax=10,
% ymin=0,ymax=18,
% xlabel={Data Value},
% ylabel={Occurrence/Frequency}]
xlabel= {Data Value},
ylabel= {Occurrence/Frequency},
enlarge x limits=0.1,
legend style={
at={(0.5,-0.15)},
anchor=north,legend columns=-1
},
width=12.8cm,
height=8cm,
point meta={x*100},
symbolic x coords={0,1,2,3,4,5,6,7,8,9},
grid=both,
grid style={line width=.1pt, draw=gray!10},
major grid style={line width=.2pt,draw=gray!50},
% axis lines=middle,
minor tick num=5,
nodes near coords={$\pgfmathprintnumber{\pgfkeysvalueof{/data point/y}}$},
]
\addplot+ [color=black, bottom color=green, top color=red] coordinates
{
(0,1)
(1,5)
(2,7)
(3,12)
(4,15)
(5,9)
(6,7)
(7,3)
(8,0)
(9,1)
} \closedcycle;
\end{axis}
\end{tikzpicture}
\caption{Area chart representing statistical data}
\end{figure}
\end{document}
These warnings arise because you are not only filling this path, you are also drawing the markers and the label markers in the same step.
If you decompose this into two separate steps, you can avoid the warnings:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{float}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\title{StackExchange}
\author{M. Tahasanul Ibrahim}
\date{January 2022}
\begin{document}
\begin{figure}[H]
\centering
\begin{tikzpicture}
\begin{axis}
[
% ybar,
% xmin=-1,xmax=10,
% ymin=0,ymax=18,
% xlabel={Data Value},
% ylabel={Occurrence/Frequency}]
xlabel= {Data Value},
ylabel= {Occurrence/Frequency},
enlarge x limits=0.1,
legend style={
at={(0.5,-0.15)},
anchor=north,legend columns=-1
},
width=12.8cm,
height=8cm,
point meta={x*100},
symbolic x coords={0,1,2,3,4,5,6,7,8,9},
grid=both,
grid style={line width=.1pt, draw=gray!10},
major grid style={line width=.2pt,draw=gray!50},
% axis lines=middle,
minor tick num=5,
% nodes near coords={$\pgfmathprintnumber{\pgfkeysvalueof{/data point/y}}$},
]
\addplot [color=black, bottom color=green, top color=red] coordinates
{
(0,1)
(1,5)
(2,7)
(3,12)
(4,15)
(5,9)
(6,7)
(7,3)
(8,0)
(9,1)
} \closedcycle;
\addplot+[black,mark=*,nodes near coords={$\pgfmathprintnumber{\pgfkeysvalueof{/data point/y}}$},] coordinates
{
(0,1)
(1,5)
(2,7)
(3,12)
(4,15)
(5,9)
(6,7)
(7,3)
(8,0)
(9,1)
};
\end{axis}
\end{tikzpicture}
\caption{Area chart representing statistical data}
\end{figure}
\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}
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:
After plotting on overleaf the following right line
\begin{tikzpicture}
\begin{axis}[
axis lines = left,
xlabel = $x$,
ylabel = {$f(x)$},
]
%Below the red parabola is defined
\addplot [
domain=-10:10,
samples=100,
color=red,
]
{((6*x - 48)/8)};
\addlegendentry{$6x + 8y = 48$}
I need to add a vertical line for x = 6 on the same plot.
Could you help me with that?
Having a look here, one possible solution is the following:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines = left,
xlabel = $x$,
ylabel = {$f(x)$},
]
%Below the red parabola is defined
\addplot [
domain=-10:10,
samples=100,
color=red,
]
{((6*x - 48)/8)};
%% This is the vertical line
\addplot[thick, samples=50, smooth,domain=0:6,magenta] coordinates {(6,0)(6,-15)};
\addlegendentry{$6x + 8y = 48$}
% Added to the legend
\addlegendentry{$x = 6$}
\end{axis}
\end{tikzpicture}
\end{document}
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}