我有两个独立的线性变量和一个因指数变量。
x = range(100)
y = range(100)
z = [2**i for i in range(100)]
df = pd.DataFrame({"x":x,"y":y,"z":z})
sns.scatterplot(
x=df.x,
y=df.y,
hue=df.z
)
Pyplot 仅包含 x 和 y 轴刻度的设置器,我只找到了如何将图例更改为离散值。
对于问题的第一部分:您可以设置seaborn的
hue_norm
函数的scatterplot
参数。
更改图例中标签的外观可以通过迭代图例的文本对象并更改格式来实现。
两种解决方案相结合:
# %%
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from matplotlib.colors import LogNorm
x = range(100)
y = range(100)
z = [2**i for i in range(100)]
df = pd.DataFrame({"x":x,"y":y,"z":z})
sns.scatterplot(
x=df.x,
y=df.y,
hue=df.z,
hue_norm=LogNorm()
)
# prevent scientific notation in legend labels
for label in plt.legend().get_texts():
label.set_text(f"{float(label.get_text()):.0f}")