I would not plot with matplotlib in parallel. Usually, one should look at output from parallel computations in Paraview, for instance by adding:
xdmf_2 = XDMFFile(MPI.comm_world, "solution_out.xdmf")
xdmf_2.write_checkpoint(func, 'func_to_save', 0, append=False)
xdmf_2.close()
to your script.