\documentclass[tikz]{standalone}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\definecolor{bgdark}{HTML}{171D2B}
\definecolor{aksen}{HTML}{F7B538}
\begin{document}
\pagecolor{bgdark}
\begin{tikzpicture}[x=0.09cm, y=0.09cm, text=white]
  % sumbu: jam belajar 0-10, nilai 40-100
  \draw[->, line width=1pt] (-1,0) -- (94,0);
  \draw[->, line width=1pt] (-1,-1) -- (-1,66);
  % label sumbu
  \node[rotate=90, font=\small\bfseries] at (-13,33) {Nilai Ulangan};
  \node[font=\small\bfseries] at (46,-9) {Jam Belajar per Minggu};
  % skala X: 0,2,4,6,8,10 (x = jam*9)
  \foreach \j in {0,2,4,6,8,10} {
    \pgfmathsetmacro{\x}{\j*9}
    \draw (\x,0) -- (\x,-1.2);
    \node[below, font=\small] at (\x,-2.2) {\j};
  }
  % skala Y: 40..100 tiap 10 (y = (nilai-40)*1.1)
  \foreach \n in {40,50,60,70,80,90,100} {
    \pgfmathsetmacro{\y}{(\n-40)*1.1}
    \draw (-1,\y) -- (-2.2,\y);
    \node[left, font=\small] at (-2.8,\y) {\n};
  }
  % grid halus (di bawah titik, tidak menimpa label)
  \foreach \j in {2,4,6,8} { \draw[white, opacity=0.10] (\j*9,0) -- (\j*9,64); }
  \foreach \n in {50,60,70,80,90} { \pgfmathsetmacro{\y}{(\n-40)*1.1} \draw[white, opacity=0.10] (0,\y) -- (90,\y); }
  % titik data (jam, nilai): x = jam*9, y = (nilai-40)*1.1
  \foreach \p in {(9,22.6),(13.5,23.8),(18,32.2),(22.5,15.4),(27,39.5),
                  (31.5,37.1),(36,51.6),(40.5,44.3),(45,44.3),(49.5,61.3),
                  (54,56.4),(31.5,25.0),(45,31.0),(13.5,16.6),(27,25.0)} {
    \fill[aksen] \p circle (0.9);
  }
\end{tikzpicture}
\end{document}
