Does the following do what you want? WeightedGraph[edges_, weights, options___]:= Block[{maxweight=Max[#[[2]]&/@weights]}, Graph[edges,VertexSize->(#[[1]]->0.9*#[[2]]/maxweight)&/@weights,options]] WeightedGraph[{1 \[UndirectedEdge] 2, 2 \[UndirectedEdge] 3, 3 \[UndirectedEdge] 1, 3 \[UndirectedEdge] 4}, (*weights:*) {1 -> 1.1, 2 -> 1.2, 3 -> 1.3, 4 -> 1.4}] The second line is basically your `Graph` call, except that it uses `WeightedGraph` instead of `Graph`, and the weights don't have `VertexSize->` in front of them.