我有以下想更改的圖例:

我想將標題從StatetoPlace和Transitionto更改為Kilometers下面的標簽State需要從0to City、1toRural和2to更改Other。我還想將Transition值更改為整數而不是浮點數。此外,我希望新標題以粗體顯示并朝向左側而不是值的正上方。
我不確定這一切是否可能以及如何最好地解決這個問題......
我通過運行以下代碼獲得了這個圖例(請記住,這個圖是 的一部分ax2):
sns.scatterplot(data = data, x = 'x', y = 'y', size = 'Transition', hue = 'State', palette = 'flare', ax = ax2, legend = 'full')
ax2.legend(bbox_to_anchor = (1.05, 1), loc = 2, borderaxespad = 0)
uj5u.com熱心網友回復:
data使用所需的值進行更改是最簡單的:map地點并使用 轉換公里astype。
如果您希望保持data原樣,assign情節呼叫內部的變化:
places = {0: 'City', 1: 'Rural', 2: 'Other'}
sns.scatterplot(data=data.assign(Place=data['State'].map(places), Kilometers=data['Transition'].astype(int)),
x='x', y='y', size='Kilometers', hue='Place', palette='flare', ax=ax2, legend='full')
或者您可以事先就地進行更改:
data = data.rename(columns={'State': 'Place', 'Transition': 'Kilometers'})
data['Place'] = data['Place'].map({0: 'City', 1: 'Rural', 2: 'Other'})
data['Kilometers'] = data['Kilometers'].astype(int)
sns.scatterplot(data=data, x='x', y='y', size='Kilometers', hue='Place', palette='flare', ax=ax2, legend='full')
如何使圖例標題 (
Place和Kilometers) 加粗并稍大一些,并且還可能向左移動?
似乎 seaborn 手動重建了傳說,所以這些標題不是真實的title物件。我不確定是否有更好的方法,但您可以用以下方式替換當前ax2.legend(...)呼叫:
# first remove the line: ax2.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0)
# then get the existing seaborn legend and alter it
leg2 = ax2.get_legend()
leg2.set_bbox_to_anchor((1.05, 1))
for t in leg2.get_texts():
if t.get_text() in ['Place', 'Kilometers']:
t.set_weight('bold')
t.set_fontsize('large')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/448579.html
標籤:Python matplotlib 海运 传奇 子情节
上一篇:從Dataframe中的開始和結束日期時間列計算正在運行的應用程式
下一篇:為什么這個命令不能改變圖形大小?
