Graph embedding has emerged as a powerful technique for representing graph-structured data in low-dimensional vector spaces, enabling efficient analysis and modeling of complex relationships. We examine a range of graph embedding techniques through a twostep approach. First, we broadly explore prominent methods; then, we investigate approaches that modify these methods, focusing on specific issues. Through this approach, we narrate the evolving research landscape and current trends in graph embedding. We further synthesize this information by categorizing it into a taxonomy of embedding models. Finally, we briefly discuss diverse graph types, generalized graph embedding notations, a generalized design space for developing embedding methods, applications of graph embedding across various domains, and open research directions.