Seismic facies analysis based on prestack data is becoming popular. Vertical elastic transitions produce the spatial structure variation of prestack waveforms, whereas lateral elastic transitions produce the amplitude intensity variation. In stratigraphic seismic facies analysis, more attention should be paid to waveform spatial structure than amplitude intensity. Conventional classification methods based on distance metrics are difficult to adapt to stratigraphic seismic facies analysis because a distance metric is a comprehensive measure of waveform structure and amplitude intensity. We have developed a dictionary learning (DL) method for prestack seismic facies analysis. The method first learns several dictionaries from labeled prestack waveform data, and these dictionaries consist of several normalization vector bases. The prestack waveform spatial structure is, therefore, embedded in these learned dictionaries, and the amplitude intensity is eliminated by the normalization process. Afterward, these dictionaries are used to sparsely represent prestack seismic data. Seismic facies are classified and determined according to representation error. A source error separation method is used to improve the antinoise performance of DL by iteratively segmenting the noise out in the training data. The results on synthetic and field seismic data show that the proposed method has a stronger tolerance to noise than K singular value decomposition, and the obtained seismic facies boundary is more accurate and clearer than the support vector machine and k-nearest neighbors algorithm. This demonstrates that the proposed method is an effective seismic facies analysis technique.