Graphene plasmonics for visible-NIR and THz applications