Created
April 11, 2020 08:04
-
-
Save AndKe/c0c999a22a8daebafb62171b671bf131 to your computer and use it in GitHub Desktop.
third Y axis
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import matplotlib.pyplot as plt | |
def make_patch_spines_invisible(ax): | |
ax.set_frame_on(True) | |
ax.patch.set_visible(False) | |
for sp in ax.spines.values(): | |
sp.set_visible(False) | |
fig, host = plt.subplots() | |
fig.subplots_adjust(right=0.75) | |
par1 = host.twinx() | |
par2 = host.twinx() | |
par3 = host.twinx() | |
# Offset the right spine of par2. The ticks and label have already been | |
# placed on the right by twinx above. | |
par2.spines["right"].set_position(("axes", 1.2)) | |
par3.spines["right"].set_position(("axes", 1.35)) | |
# Having been created by twinx, par2 has its frame off, so the line of its | |
# detached spine is invisible. First, activate the frame but make the patch | |
# and spines invisible. | |
#make_patch_spines_invisible(par2) | |
make_patch_spines_invisible(par3) | |
# Second, show the right spine. | |
par2.spines["right"].set_visible(True) | |
par3.spines["right"].set_visible(True) | |
p1, = host.plot([0, 1, 2], [0, 1, 2], "b-", label="Density") | |
p2, = par1.plot([0, 1, 2], [0, 3, 2], "r-", label="Temperature") | |
p3, = par2.plot([0, 1, 2], [50, 30, 15], "g-", label="Velocity") | |
p4, = par3.plot([0, 1, 2], [12, 18, 20], "y-", label="Voltage") | |
host.set_xlim(0, 2) | |
host.set_ylim(0, 2) | |
par1.set_ylim(0, 4) | |
par2.set_ylim(1, 65) | |
host.set_xlabel("Distance") | |
host.set_ylabel("Density") | |
par1.set_ylabel("Temperature") | |
par2.set_ylabel("Velocity") | |
par3.set_ylabel("Voltage") | |
host.yaxis.label.set_color(p1.get_color()) | |
par1.yaxis.label.set_color(p2.get_color()) | |
par2.yaxis.label.set_color(p3.get_color()) | |
par3.yaxis.label.set_color(p4.get_color()) | |
tkw = dict(size=4, width=1.5) | |
host.tick_params(axis='y', colors=p1.get_color(), **tkw) | |
par1.tick_params(axis='y', colors=p2.get_color(), **tkw) | |
par2.tick_params(axis='y', colors=p3.get_color(), **tkw) | |
par3.tick_params(axis='y', colors=p4.get_color(), **tkw) | |
host.tick_params(axis='x', **tkw) | |
lines = [p1, p2, p3 , p4] | |
host.legend(lines, [l.get_label() for l in lines]) | |
plt.show() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment