## පුරාවෘත්තය තැබීම ( bbox_to_anchor
) පුරාවෘත්තයක් අක්ෂයේ මායිම් පෙට්ටිය තුළ ස්ථානගත කර ඇත්තේ loc
තර්කය භාවිතා කරමිනි plt.legend
.
උදා: loc="upper right"
ඇතැම් අවස්ථාවන් කොටුව වන අතර පෙරනිමි ප්රමාණය විසින් ඉහළ දකුණු කෙළවරේ ඇති පුරාවෘත්තය තබයි (0,0)
කිරීමට (1,1)
අක්ෂ ඛණ්ඩාංක (හෝ කොටුව අංකනය ඇතැම් අවස්ථාවන් හි (x0,y0, width, height)=(0,0,1,1)
).
පුරාවෘත්තය අක්ෂ මායිම් පෙට්ටියෙන් පිටත තැබීම සඳහා, පුරාවෘත්තයේ (x0,y0)
පහළ වම් කෙළවරේ අක්ෂ ඛණ්ඩාංක රාශියක් නියම කළ හැකිය .
plt.legend(loc=(1.04,0))
කෙසේ වෙතත්, වඩාත් විවිධාකාර ප්රවේශයක් වනුයේ bbox_to_anchor
තර්කය භාවිතා කරමින් පුරාවෘත්තය තැබිය යුතු මායිම් පෙට්ටිය අතින් නියම කිරීමයි . කෙනෙකුට (x0,y0)
බොක්ස් කොටසේ කොටසක් පමණක් සැපයීම සීමා කළ හැකිය . මෙය ශුන්ය පරතර පෙට්ටියක් නිර්මාණය කරයි, එයින් පුරාවෘත්තය loc
තර්කය මඟින් දෙන දිශාවට පුළුල් වේ . උදා
plt.legend (bbox_to_anchor = (1.04,1), loc = "ඉහළ වමේ")
පුරාවෘත්තය අක්ෂයෙන් පිටත තබයි, පුරාවෘත්තයේ ඉහළ වම් කෙළවර (1.04,1)
අක්ෂයේ ඛණ්ඩාංකවල ස්ථානගත වේ.
තවත් නිදසුන් වැනි විවිධ තර්ක අතර අන්තර්, පහත දී ඇති අතර ඊට අමතරව ඇත mode
හා ncols
පෙන්වා ඇත.
l1 = plt.legend(bbox_to_anchor=(1.04,1), borderaxespad=0)
l2 = plt.legend(bbox_to_anchor=(1.04,0), loc="lower left", borderaxespad=0)
l3 = plt.legend(bbox_to_anchor=(1.04,0.5), loc="center left", borderaxespad=0)
l4 = plt.legend(bbox_to_anchor=(0,1.02,1,0.2), loc="lower left",
mode="expand", borderaxespad=0, ncol=3)
l5 = plt.legend(bbox_to_anchor=(1,0), loc="lower right",
bbox_transform=fig.transFigure, ncol=3)
l6 = plt.legend(bbox_to_anchor=(0.4,0.8), loc="upper right")
කිරීමට 4-tuple තර්කය පරිවර්තනය කරන්නේ කෙසේද යන්න ගැන විස්තර bbox_to_anchor
දී මෙන්, l4
, සොයා ගත හැකි මෙම ප්රශ්නය . මෙම mode="expand"
4-tuple විසින් ලබා දී ඇති ඇතැම් අවස්ථාවන් පෙට්ටිය ඇතුලේ තිරස් අතට පුරාවෘත්තය පුළුල් කරයි. සිරස් අතට පුළුල් කළ පුරාවෘත්තයක් සඳහා, මෙම ප්රශ්නය බලන්න .
සමහර විට අක්ෂ ඛණ්ඩාංක වෙනුවට රූප ඛණ්ඩාංකවල මායිම් කොටුව සඳහන් කිරීම ප්රයෝජනවත් විය හැකිය. පුරාවෘත්තය රූපයේ පහළ වම් කෙළවරේ තැබීමට තර්කය භාවිතා කරන l5
ඉහළ සිට ඇති උදාහරණයේ මෙය පෙන්වා ඇත bbox_transform
.
පසු සැකසුම්
පුරාවෘත්තය අක්ෂයෙන් පිටත තැබීමෙන් බොහෝ විට එය රූපයේ කැන්වසයෙන් සම්පූර්ණයෙන්ම හෝ අර්ධ වශයෙන් පිටත ඇති අනවශ්ය තත්වයට මග පාදයි.
මෙම ගැටලුවට විසඳුම්:
උප කුලක පරාමිතීන් සකසන්න
කෙනෙකුට උප කුලක පරාමිතීන් වෙනස් කළ හැකිය, අක්ෂය රූපය තුළ අඩු ඉඩ ප්රමාණයක් ගන්නා අතර (එමඟින් පුරාවෘත්තයට වැඩි ඉඩක් ඉතිරි වේ) plt.subplots_adjust
. උදා
plt.subplots_adjust(right=0.7)
පුරාවෘත්තය තැබිය හැකි රූපයේ දකුණු පැත්තේ 30% ක ඉඩක් තබයි.
තද පිරිසැලසුම
භාවිතා කරමින් plt.tight_layout
රූපයේ මූලද්රව්ය රූප දාරවලට එරෙහිව තදින් වාඩි වී ඇති පරිදි උප කුලක පරාමිතීන් ස්වයංක්රීයව සැකසීමට ඉඩ දෙන්න. අවාසනාවකට මෙන්, පුරාවෘත්තය මෙම ස්වයංක්රීයකරණය තුළ සැලකිල්ලට නොගනී, නමුත් අපට සමස්ත උප පොළ ප්රදේශයටම (ලේබල් ද ඇතුළුව) ගැලපෙන සෘජුකෝණාස්රාකාර පෙට්ටියක් සැපයිය හැකිය.
plt.tight_layout(rect=[0,0,0.75,1])
සමග එම සංඛ්යාව ඉතිරිbbox_inches = "tight"
තර්කය bbox_inches = "tight"
කිරීමට plt.savefig
, එම කැන්වසය මතින් සියලු චිත්ර ශිල්පියා (පුරාවෘත්තය ද ඇතුළුව) ගැලවීම ප්රදේශය තුලට සුදුසු වේ, එවන් එම සංඛ්යාව බේරා ගැනීමට භාවිතා කළ හැක. අවශ්ය නම්, රූපයේ ප්රමාණය ස්වයංක්රීයව සකසනු ලැබේ.
plt.savefig("output.png", bbox_inches="tight")
උප කුලක පරාමිතීන් ස්වයංක්රීයව සැකසීම උප කුලකයේ පිහිටීම ස්වයංක්රීයව සැකසීමේ
ක්රමයක් රූපයේ ප්රමාණය වෙනස් නොකර කැන්වසය තුළට ගැලපෙන පුරාවෘත්තය මෙම පිළිතුරෙන් සොයාගත හැකිය: නිශ්චිත ප්රමාණයෙන් හා පෑඩින් නොමැතිව රූපයක් නිර්මාණය කිරීම (සහ අක්ෂයෙන් පිටත පුරාවෘත්තය)
ඉහත සාකච්ඡා කළ සිද්ධීන් අතර සංසන්දනය:
## විකල්ප
සංඛ්යා පුරාවෘත්තයක්
අක්ෂය වෙනුවට රූපයට පුරාවෘත්තයක් භාවිතා කළ හැකිය matplotlib.figure.Figure.legend
. විශේෂ තර්ක අවශ්ය නොවන matplotlib version> = 2.1 සඳහා මෙය විශේෂයෙන් ප්රයෝජනවත් වී ඇත
fig.legend(loc=7)
රූපයේ විවිධ අක්ෂයන්හි සියලුම කලාකරුවන් සඳහා පුරාවෘත්තයක් නිර්මාණය කිරීමට. පුරාවෘත්තය ස්ථානගත කර ඇත්තේ loc
එය අක්ෂයක් තුළ තබා ඇති ආකාරය හා සමාන වන තර්කය භාවිතා කරමිනි , නමුත් සමස්ත රූපයට සාපේක්ෂව - එබැවින් එය අක්ෂයට පිටතින් තරමක් ස්වයංක්රීයව පවතිනු ඇත. ඉතිරිව ඇත්තේ පුරාවෘත්තය සහ අක්ෂය අතර අතිච්ඡාදනය නොවන පරිදි උප පොළවල් සකස් කිරීමයි. මෙහි ඉහළින් “උපසිරැසි පරාමිතීන් සකසන්න” යන කරුණ ප්රයෝජනවත් වනු ඇත. උදාහරණයක්:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,2*np.pi)
colors=["#7aa0c4","#ca82e1" ,"#8bcd50","#e18882"]
fig, axes = plt.subplots(ncols=2)
for i in range(4):
axes[i//2].plot(x,np.sin(x+i), color=colors[i],label="y=sin(x+{})".format(i))
fig.legend(loc=7)
fig.tight_layout()
fig.subplots_adjust(right=0.75)
plt.show()
කැපවූ උප කුලක අක්ෂයන් තුළ ඇති පුරාවෘත්තය
භාවිතා කිරීම සඳහා විකල්පයක් bbox_to_anchor
වනුයේ පුරාවෘත්තය එහි කැපවූ උප පොළ අක්ෂයන්හි ( lax
) තැබීමයි . පුරාවෘත්ත උපසිරැසිය කුමන්ත්රණයට වඩා කුඩා විය යුතු බැවින්, අපි gridspec_kw={"width_ratios":[4,1]}
අක්ෂ නිර්මාණය කිරීමේදී භාවිතා කළ හැකිය . අපට අක්ෂයන් සැඟවිය හැකි lax.axis("off")
නමුත් තවමත් පුරාවෘත්තයක් තැබිය හැකිය. පුරාවෘත්ත හැසිරවීම සහ ලේබල් සැබෑ කුමන්ත්රණයෙන් ලබා h,l = ax.get_legend_handles_labels()
ගත යුතු අතර පසුව lax
උප කුලකයේ පුරාවෘත්තයට සැපයිය හැකිය lax.legend(h,l)
. සම්පූර්ණ උදාහරණයක් පහතින්.
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = 6,2
fig, (ax,lax) = plt.subplots(ncols=2, gridspec_kw={"width_ratios":[4,1]})
ax.plot(x,y, label="y=sin(x)")
....
h,l = ax.get_legend_handles_labels()
lax.legend(h,l, borderaxespad=0)
lax.axis("off")
plt.tight_layout()
plt.show()
මෙය කුමන්ත්රණයක් නිපදවන අතර එය දෘශ්යමය වශයෙන් ඉහළින් ඇති කුමන්ත්රණයට සමාන ය:
පුරාවෘත්තය තැබීම සඳහා අපට පළමු අක්ෂ භාවිතා කළ හැකිය, නමුත් bbox_transform
පුරාවෘත්ත අක්ෂ භාවිතා කරන්න,
ax.legend(bbox_to_anchor=(0,0,1,1), bbox_transform=lax.transAxes)
lax.axis("off")
මෙම ප්රවේශයේදී, පුරාවෘත්ත හැසිරවීම් බාහිරව ලබා ගැනීමට අපට අවශ්ය නැත, නමුත් අපි bbox_to_anchor
තර්කය නියම කළ යුතුය .
### වැඩිදුර කියවීම සහ සටහන්:
- Matplotlib පුරාවෘත්ත මාර්ගෝපදේශය සලකා බලන්න සමඟ ඔබට කිරීමට අවශ්ය වෙනත් දේවල් පිළිබඳ උදාහරණ කිහිපයක් සමඟ .
- පයි ප්රස්ථාර සඳහා ජනප්රවාද තැබීම සඳහා උදාහරණ කේත කිහිපයක් මෙම ප්රශ්නයට පිළිතුරු වශයෙන් කෙලින්ම සොයාගත හැකිය: පයිතන් - පුරාවෘත්තය පයි ප්රස්ථාරය සමඟ අතිච්ඡාදනය වේ
- මෙම
loc
තර්කය අංක වෙනුවට ඇමතුම් කෙටි ඇති කරන නූල්, ගත හැකි, කෙසේ වෙතත්, ඔවුන් ඉතා අවිවාදයෙන්ම පිළිගැනීමට එකිනෙකාට සිතියම් ගත නොවේ. යොමු කිරීම සඳහා සිතියම්ගත කිරීම මෙන්න: