Almost any flower garden will attract butterflies, but if you're trying to attract as many different varieties of butterflies, in as many different stages of life, for as long as possible, here are some of the plants you might want to include:
Many butterflies will lay their eggs only on the particular plants the caterpillar will need to eat once it hatches. For monarchs, that includes any plants in the milkweed family -- butterfly milkweed, swamp or smooth milkweed, etc.
Swallowtails lay their eggs on members of the parsley family -- dill, fennel, Queen Anne's lace, etc.
The caterpillars of viceroy butterflies feed on willows. Other good trees and shrubs for butterfly larva include birch, cherry, crabapple, plum, buckeye, etc.
Asters or daisies are other good food sources -- coreopsis, rudbeckia, coneflowers, asters, yarrow, etc.
Good nectar sources for the mature butterfly are bright-colored (lavender, purple, pink, red), fragrant flowers with "nectar guides."
Asters and milkweeds are good nectar sources, along with lilies, bee balm, gayfeather, goldenrod, phlox, etc. .
Flowering shrubs like viburnum, butterfly bush and lilacs are also good choices.
Native grasses like Indiangrass, bluestem and switchgrass provide good resting and hiding places.
And one of the easiest recommendations to follow is to leave a weedy patch somewhere in your yard since clover, violets, thistles and fleabanes are also important parts of their diet.