Jaebum,
Using your code above, I tried the following to add labels, hyperlinks and tooltips to the edges,
coloredges = SetColorFunction[edgesets];
MVPQGraph =
Graph[{"M", "V", "P", "Q"}, edgesets[[All, 1]], VertexSize -> .09,
VertexLabels ->
Placed["Name", Center],(*EdgeLabels\[Rule]edgelabels,*)
VertexShapeFunction -> "RoundedSquare",
VertexStyle -> Hue[0.125, 0.7, 0.9],
VertexLabelStyle -> Directive[Bold, FontFamily -> "Arial", 12],
EdgeStyle -> Arrowheads[{{.03, .3}}],
EdgeShapeFunction -> ReleaseHold[coloredges],
EdgeLabels ->
Table[edgesets[[i]][[1]] ->
Placed[
Tooltip[
Hyperlink[
Graphics[{Text[Style[i, 9, Bold], {0, 0}], Circle[],
Lighter[edgesets[[i]][[2]], .3], Opacity[.7], Disk[]} ,
ImageSize -> 20], "http://community.wolfram.com"]], Center],
{i, 17}] ]
And obtained this
Which resembles the initial problem. with the colours.
It seems that the EdgeLabels directives must be managed by your functions
colorFuncSet[edge_, clist_] :=
With[{a = Unique["x"]}, {Inactive[a],
Inactive[edge -> (a = 0; {a++; clist[[a]], Arrow[#]} &)]}]
SetColorFunction[edgeset_] :=
Block[{gather},
gather = colorFuncSet[#[[1, 1]], #[[All, 2]]] & /@
GatherBy[edgesets, First];
(With[{var = gather[[All, 1]], cont = gather[[All, 2]]},
Hold@Module[var, cont]] /. Inactive[x_] :> x)]
The indices and colours repeated in the circles are saying that the edge labels allocation must be done in similar form as the issue with the overlapping edges themselves.
I have tried many other things as
elabels = Flatten[{ #[[1]][[1]] -> Table[Placed[
Tooltip[
Hyperlink[
Graphics[{Text[Style[j, 9, Bold], {0, 0}], Circle[],
Lighter[#[[j]][[2]], .3], Opacity[.7], Disk[]} ,
ImageSize -> 20], "http://community.wolfram.com"]],
Center], {j, 1, Length[#]}] & /@ gathering}, 1];
elabels // Column
And applied directly 'elabels' as EdgeLabels -> elabels in
MVPQGraph =
Graph[{"M", "V", "P", "Q"}, edgesets[[All, 1]], VertexSize -> .09,
VertexLabels ->
Placed["Name", Center],(*EdgeLabels\[Rule]edgelabels,*)
VertexShapeFunction -> "RoundedSquare",
VertexStyle -> Hue[0.125, 0.7, 0.9],
VertexLabelStyle -> Directive[Bold, FontFamily -> "Arial", 12],
EdgeStyle -> Arrowheads[{{.03, .3}}],
EdgeShapeFunction -> ReleaseHold[coloredges],
EdgeLabels ->
elabels ]
But does not work either. It is even worse.
So, I give up for the moment.
It is a pity, since this should not be a big issue if the multiple edges were treated consistently by Mathematica.
Many thanks again.