Heim >Backend-Entwicklung >Python-Tutorial >Wie erstelle ich eine diskontinuierliche X-Achse in Matplotlib?

Wie erstelle ich eine diskontinuierliche X-Achse in Matplotlib?

DDD
DDDOriginal
2024-11-27 04:55:10510Durchsuche

How to Create a Discontinuous X-axis in Matplotlib?

Erstellen einer diskontinuierlichen Achse in Matplotlib

In Matplotlib ist es möglich, das Erscheinungsbild der x-Achse zu ändern, um eine Diskontinuität zwischen zwei Wertebereichen anzuzeigen.

Anpassen der Achse

Obwohl es keine direkte Möglichkeit gibt, eine diskontinuierliche Achse zu erstellen, ist dies möglich Erzielen Sie einen ähnlichen Effekt, indem Sie die Achsenbeschriftungen und das Erscheinungsbild anpassen. Ein Ansatz besteht darin, eine benutzerdefinierte Transformation zu verwenden, um eine diskontinuierliche Achse zu erstellen.

Unterplots

Wenn Sie lieber keine benutzerdefinierte Transformation erstellen möchten, können Sie Unterplots verwenden, um den gewünschten Effekt zu erzielen. Indem Sie zwei Unterplots mit unterschiedlichen X-Achsen-Grenzwerten erstellen und die Stacheln dazwischen ausblenden, können Sie eine diskontinuierliche Achse simulieren.

Beispiel

import matplotlib.pyplot as plt
import numpy as np

x = np.r_[0:1:0.1, 9:10:0.1]
y = np.sin(x)

fig, (ax, ax2) = plt.subplots(1, 2, sharey=True)

ax.plot(x, y, 'bo')
ax2.plot(x, y, 'bo')

ax.set_xlim(0, 1) 
ax2.set_xlim(9, 10) 

ax.spines['right'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax.yaxis.tick_left()
ax2.yaxis.tick_right()

plt.subplots_adjust(wspace=0.15)

plt.show()

Dieser Code erstellt einen Plot mit jeweils zwei Unterplots zeigt einen anderen Bereich von x-Werten. Die Überlappung zwischen den Nebenplots wird ausgeblendet, um den Eindruck einer diskontinuierlichen Achse zu erzeugen.

Brucheffekt

Um den Effekt der unterbrochenen Achsenlinien (//) hinzuzufügen, können Sie den folgenden Code verwenden:

ax.plot((1-d,1+d),(-d,+d), **kwargs) # top-left diagonal
ax.plot((1-d,1+d),(1-d,1+d), **kwargs) # bottom-left diagonal

kwargs.update(transform=ax2.transAxes) # switch to the bottom axes
ax2.plot((-d,d),(-d,+d), **kwargs) # top-right diagonal
ax2.plot((-d,d),(1-d,1+d), **kwargs) # bottom-right diagonal

wobei d die Größe der diagonalen Linien in Achsenkoordinaten darstellt. Dieser Code fügt den Ecken jeder Achse diagonale Linien hinzu, wodurch der Eindruck einer unterbrochenen Achse entsteht.

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine diskontinuierliche X-Achse in Matplotlib?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn