If you're using Graph, then supply the
VertexCoordinates -> {} to specify the coordinates of the vertices. Note that these must be supplied in the order of the vertex nodes, I think.
points = {{1, 2}, {2, -1}, {3, 1}}
Graph[{1 \[UndirectedEdge] 2, 2 \[UndirectedEdge] 3, 3 \[UndirectedEdge] 1},VertexLabels -> "Name"]
Graph[{1 \[UndirectedEdge] 2, 2 \[UndirectedEdge] 3, 3 \[UndirectedEdge] 1}, VertexLabels -> "Name", VertexCoordinates -> points, Axes -> True]
To place the graph over an image, you can use Overlay. Or you can have fun with the Prolog option in Graph:
points = {{100, 180}, {150, 150}, {170, 100}};
g = Graph[{1 \[UndirectedEdge] 2, 2 \[UndirectedEdge] 3,
3 \[UndirectedEdge] 1}, VertexLabels -> "Name",
VertexCoordinates -> points,
EdgeStyle -> Directive[{AbsoluteThickness[5], Cyan}],
VertexStyle -> Red, VertexSize -> Tiny,
Prolog -> {Raster[
ImageData[
Darker[ImageResize[
ExampleData[{"TestImage", "Mandrill"}], {200}], .5],
DataReversed -> True]]}, PlotRange -> {{0, 200}, {0, 200}}
]