% !TEX TS-program = lualatex
\documentclass[tikz]{standalone}
\usepackage{luatexja}
\usetikzlibrary{matrix}
\usepackage{pgfplots}
\tikzset{% スタイルの作成
  pointtype text/.style={mark=text,mark size=4pt},
  south west label/.style={
    matrix,matrix of nodes,
    anchor=south west,at={(rel axis cs:0.01,0.01)},
    nodes={anchor=west,inner sep=0},
  },
  text mark={☃},
}
\pgfplotsset{% グラフ全体の見た目の設定
  compat=1.17,
  major tick length=0.2cm,
  minor tick length=0.1cm,
  every axis/.style={semithick},
  tick style={semithick,black},
  legend cell align=left,
  legend image code/.code={%
    \draw[mark repeat=2,mark phase=2,#1]
      plot coordinates {(0cm,0cm) (0.5cm,0cm) (1.0cm,0cm)};
  },
  log number format basis/.code 2 args={
    \pgfmathsetmacro\e{#2}
    \pgfmathparse{#2==0}\ifnum\pgfmathresult>0{1}\else
    \pgfmathparse{#2==1}\ifnum\pgfmathresult>0{10}\else
    {$#1^{\pgfmathprintnumber{\e}}$}\fi\fi},
}
\begin{document}
\begin{tikzpicture}[thick]
\begin{semilogyaxis}[% パラメータなどの設定
  width=85mm, height=65mm,
  domain=0:40,
  xmin=0, xmax=40,
  ymin=1e-5, ymax=1,
  minor x tick num=1,
  xlabel={Average CNR $\Gamma$ [dB]},
  ylabel={Bit Error Rate},
  legend entries={Theory,Simulation},
  legend style={draw=none,fill=none},
  colormap/hot,
]
  % 理論特性
  \addplot[smooth] gnuplot {(1-1/sqrt(1+2/(10**(x/10))))/2};

  % 復調特性
  \addplot[scatter,pointtype text,dashed,red] table {data.txt};

  \matrix[south west label] {
    QPSK \\
    Rayleigh fading \\
    Perfect channel estimation \\
  };
\end{semilogyaxis}
\end{tikzpicture}
\end{document}