Update 2: Hiding the edges within the same community for general (not-necessarily tri-partite) graphs:
ClearAll[insideEdges]
insideEdges[g_, c_]:=Select[EdgeList[g], Or @@ (Function[x, SubsetQ[x, {##}] ]/@c)& @@ #&]
Examples:
zkc = ExampleData[{"NetworkGraph", "ZacharyKarateClub"}];
CommunityGraphPlot[zkc, CommunityRegionStyle -> {LightRed, LightGreen, LightBlue},
EdgeStyle -> {Alternatives @@ insideEdges[zkc, FindGraphCommunities[zkc]] :> Opacity[0]}]
dsn= ExampleData[{"NetworkGraph", "DolphinSocialNetwork"}];
CommunityGraphPlot[dsn, CommunityRegionStyle -> 97,
EdgeStyle -> {Alternatives @@ insideEdges[dsn, FindGraphCommunities[dsn]] :> Opacity[0]}]
Update 1:
athreepartitegraph = CompleteGraph[{10, 7, 3},
GraphLayout -> {"MultipartiteEmbedding", "VertexPartition" -> {10, 7, 3}},
ImageSize -> 400, VertexLabels -> "Name", ImagePadding -> 20];
cgp = CommunityGraphPlot[athreepartitegraph,
{Range[10], Range[11, 17], Range[18, 20]}, Method -> "Hierarchical"];
Row[{athreepartitegraph, cgp}]
or
CommunityGraphPlot[athreepartitegraph,
{Range[10], Range[11, 17], Range[18, 20]}, Method -> "SpringElectrical"]
to compare with alternative vertex layouts:
Row[SetProperty[athreepartitegraph,
GraphLayout -> #] & /@ {{"CircularEmbedding"},
{"CircularMultipartiteEmbedding", "VertexPartition" -> {10, 7, 3}}}]
Original post:
Maybe something like:
g2 = ExampleData[{"NetworkGraph", "ZacharyKarateClub"}];
g2 = SetProperty[g2, {VertexLabels -> "Name", ImagePadding -> 20, ImageSize -> 400}];
fgp = FindGraphPartition[GraphComplement[g2], 3];
mpg = Graph[Flatten@fgp, EdgeList[g2],
GraphLayout -> {"MultipartiteEmbedding", "VertexPartition" -> (Length /@ fgp)},
VertexLabels -> "Name",
ImagePadding -> 20, ImageSize -> 400];
Row[{g2, mpg}]
CommunityGraphPlot[g2, fgp, Method -> "Hierarchical"]