If you dont'tdon't want to switch to pgfplots, you would need to add it manually which is possible but not very elegant:
\documentclass[border=10pt]{standalone} \usepackage{tikz} \usetikzlibrary{ plotmarks, positioning, fit } \begin{document} \begin{tikzpicture}[xscale=3, yscale=3] \draw [<->] (0,3) -- (0,0) -- (3,0); \node[mark size=7pt, color=black] at (0.5,0.0931) {\pgfuseplotmark{diamond}}; \node[mark size=7pt, color=black] at (1.5,0.2401) {\pgfuseplotmark{diamond}}; \node[mark size=7pt, color=black] at (2.5,0.7857) {\pgfuseplotmark{diamond}}; \node[mark size=4pt, color=black] at (0.5,0.1310) {\pgfuseplotmark{square}}; \node[mark size=4pt, color=black] at (1.5,0.4881) {\pgfuseplotmark{square}}; \node[mark size=4pt, color=black] at (2.5,0.3571) {\pgfuseplotmark{square}}; \node[below] at (0.5,0) {text 1}; \node[below] at (1.5,0) {text 2}; \node[below] at (2.5,0) {text 3}; \node[left] at (0,3) {text}; \node[anchor=north east, minimum width=5em, align=left] at (3,3) (legendA) {label 1}; \node[left=5pt of legendA, mark size=7pt, color=black] (labelA) {\pgfuseplotmark{diamond}}; \node[below=10pt of legendA, minimum width=5em, align=left] (legendB) {label 2}; \node[left=5pt of legendB, mark size=4pt, color=black] (labelB) {\pgfuseplotmark{square}}; \node[fit={(legendA) (labelA) (legendB) (labelB)}, draw] {}; \end{tikzpicture} \end{document} 