簡體   English   中英

嘗試向 Seaborn 散點圖添加顏色條

[英]Trying to add a colorbar to a Seaborn scatterplot

我是一名地質學碩士生,正在寫我的論文,重點是南太平洋一些火山的二氧化硫 output。 我對 R 有一點經驗,但我的主管推薦 python(特別是 JupyterLab)用於生成數字和數據操作,所以我對編程和基本上自學 Z34D1F91FB2E514B8576FAB1A75A89A 非常陌生。 我正在嘗試使用地震數據使用 seaborn 生成一些散點圖,但我似乎無法在地震震級的圖例中顯示顏色條。 我正在使用的代碼如下,我會盡力以清晰的方式對其進行格式化。

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib as mpl
from scipy import stats
import cartopy.crs as ccrs
import cartopy.io.img_tiles as cimgt

然后是我正在使用的數據集。 這些是地震數據集。

df = pd.read_csv('Vanuatu Earthquakes May18-May19.csv')
df = pd.read_csv('Vanuatu Earthquakes May17-May18.csv')
df = pd.read_csv('Vanuatu Earthquakes May19-Jul20.csv')

和火山的位置,純粹是為了空間參考。

dg = pd.read_csv('Volcano coordinates.csv')

這是我目前正在嘗試使用的主要 plot。 到目前為止,我已經能夠使用色調 function 對地震的震級進行分類,但我不喜歡它在圖例中的外觀,並且想將其轉換為顏色條(或使用顏色條而不是色調,或者/或) ,但我不知道該怎么做。 或者,如果有一個不同的 function 會給我我正在尋找的結果,我肯定會接受它而不是散點圖。 黑色三角形也是火山,所以現在可以忽略它們。

plt.figure(figsize=(5.5,9))
sns.scatterplot(x='longitude', y='latitude', data=df, 
                marker='D', hue='mag', palette='colorblind', cmap='RdBu')
sns.scatterplot(x='longitude', y='latitude', data=dg, 
                marker='^', legend='brief', color='k', s=100)
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0., title='Magnitude (Mw)')
plt.xlabel('Longitude (degrees)')
plt.ylabel('Latitude (degrees)')
plt.title('Earthquake and Volcano Locations', size=15)
plt.show()

圖片

希望這足夠清楚,但如果需要更多信息,請告訴我!

此答案中使用的關於 Seaborn 條形圖的相同方法也可以應用於散點圖。 使用您的代碼,看起來像這樣:

# ...
norm = plt.Normalize(df['mag'].min(), df['mag'].max())
sm = plt.cm.ScalarMappable(cmap="RdBu", norm=norm)
sm.set_array([])

ax = sns.scatterplot(x='longitude', y='latitude', data=df, marker='D', palette='RdBu', hue='mag')
sns.scatterplot(x='longitude', y='latitude', data=dg, marker='^', 
                legend='brief', color='k', s=100, ax=ax)

# Remove the legend and add a colorbar (optional)
# ax.get_legend().remove()
# ax.figure.colorbar(sm)

# ...

有關操作顏色條的標簽和刻度的信息,請參閱此問題及其答案。

有關使用tips數據集的完整示例:

import seaborn as sns
import matplotlib.pyplot as plt

sns.set()
tips = sns.load_dataset("tips")
ax = sns.scatterplot(x="total_bill", y="tip", hue="size", palette='RdBu', data=tips)

norm = plt.Normalize(tips['size'].min(), tips['size'].max())
sm = plt.cm.ScalarMappable(cmap="RdBu", norm=norm)
sm.set_array([])

# Remove the legend and add a colorbar
ax.get_legend().remove()
ax.figure.colorbar(sm)

plt.show()

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM