使用 Seaborn 创建不同的调色板
本文将探讨 Seaborn 调色板的不同选项。我们还将向你展示如何在 Seaborn 中创建自定义调色板。
使用 Seaborn 创建不同的调色板
让我们首先导入 Seaborn 并将其保存为 seaborn
。我们还将从名为 tips
的 Seaborn 库中加载一些数据。
import seaborn as seaborn
查看 customer_bill
数据框的顶部,你会发现每个客户留下的账单金额和小费金额都不同。我们也有不同的特点,比如一周中的哪一天或提供那顿饭的时间。
customer_bill = seaborn.load_dataset("tips")
customer_bill.head()
现在我们将 set_style
设置为 darkgrid
并使用 scatterplot
函数创建散点图。
在这个 scatterplot
函数中,我们将 total_bill
传递给 x 轴,而 y 轴表示 tip
。data
属性来自 customer_bill
数据框。
我们还可以将另一列,如 day
的分类列传递给 hue
属性。这将在一周中的每一天分成不同的颜色。
import seaborn as seaborn
# collect data from seaborn
customer_bill = seaborn.load_dataset("tips")
customer_bill.head()
# set grid style
seaborn.set_style("darkgrid")
seaborn.scatterplot(x="total_bill", y="tip", data=customer_bill, hue="day")
# uncomment the below code if you are not using jupyter notebook
# import matplotlib.pyplot as plot
# plot.show()
如果你注意到,Seaborn 在散点图中使用其默认调色板。我们可以使用 color_palette()
函数检查默认 Seaborn 的调色板。
seaborn.color_palette()
这将显示 Seaborn 用于前四种颜色的默认调色板。
我们可以在 color_palette()
函数中传递几个选项。如果我们传递一个有效的字符串名称,例如 Pastel2
,我们将看到其他调色板。
seaborn.color_palette("Pastel2")
我们可以使用不同的命名调色板。我们只需要添加这个 palette
参数并将其设置为等于有效的调色板名称。
seaborn.set_style("whitegrid")
seaborn.scatterplot(
x="total_bill", y="tip", data=customer_bill, hue="day", palette="Pastel2"
)
目前我们可以在 Seaborn 中使用 170 种不同的命名调色板。如果你忘记了他们的名字,你不必去找他们;你可以传递无效的调色板名称,例如:
seaborn.scatterplot(
x="total_bill", y="tip", data=customer_bill, hue="day", palette="GH"
)
输出:
如果你注意到其中很多带有 _r
。这些是相同的调色板,但顺序相反。
seaborn.color_palette("Pastel2_r")
如果我们不传递调色板参数,那么 Seaborn 会设置默认的调色板颜色。
seaborn.scatterplot(x="total_bill", y="tip", data=customer_bill)
如果我们想更新这些点的颜色,我们将其称为 color
。它不是调色板;它是一种颜色,因为我们在整个图形中只有一种颜色,但请注意如果我们将这种颜色切换为蓝色字符串会发生什么。
seaborn.scatterplot(x="total_bill", y="tip", data=customer_bill, color="blue")
这是 Matplotlib 蓝色,而不是 Seaborn 蓝色。
假设我们想使用 color_palette()
函数提取 Seaborn 蓝色,并选择前两种颜色。这给了我们第一个元组,蓝色,第二个,橙色。
BLUE, ORANGE = seaborn.color_palette()[:2]
seaborn.scatterplot(x="total_bill", y="tip", data=customer_bill, color=BLUE)
在 Seaborn 中创建自定义调色板
我们可以在 Seaborn 中基于单一颜色或混合多种颜色创建自定义调色板。我们甚至可以创建一个突出显示某个特定类别的调色板。
我们可以通过多种方式使用 Seaborn 创建自定义调色板。如果我们需要这个调色板中的其他颜色,我们可以传递一个整数。
seaborn.color_palette("Pastel2", 10)
我们还可以通过访问 light_palette()
函数来创建我们的调色板,该方法接受一种命名颜色。此调色板包含一种颜色的不同深浅。
seaborn.light_palette("gray")
Seaborn 有一个创建深色调色板的 dark_palette()
函数。颜色从较暗的阴影开始,然后上升到指定的颜色。
seaborn.dark_palette("red")
Seaborn 还允许我们使用这个 blend_palette()
函数创建不同的调色板,参数将是一个颜色列表。这将创建一个调色板,混合我们在列表中传递的所有颜色。
seaborn.blend_palette(["blue", "red", "green"], 12)
让我们将 blend_palette()
传递给调色板参数。执行此操作时可能会出现错误,因为 blend_palette()
的默认颜色数为六,但我们的 day 列中只有四个不同的类别。
seaborn.scatterplot(
x="total_bill",
y="tip",
data=customer_bill,
hue="day",
palette=seaborn.blend_palette(["green", "red"]),
)
输出:
我们需要传递一个整数,因为我们的 day
列类别存在。
seaborn.scatterplot(
x="total_bill",
y="tip",
data=customer_bill,
hue="day",
palette=seaborn.blend_palette(["green", "red"], 4),
)
Seaborn 为我们提供了使用突出显示调色板的选项,只要我们想强调一个或两个类别,就会使用它。我们将为每个独特的日子创建一个调色板字典。
P_DICT = {k: "gray" for k in customer_bill.day.unique()}
P_DICT
那天的名字将是这个字典的关键。
如果我们想在图中突出显示星期五,我们可以为我们感兴趣的任何类别分配一个新值 red
。
P_DICT["Fri"] = "red"
seaborn.scatterplot(
x="total_bill", y="tip", data=customer_bill, hue="day", palette=P_DICT
)
我们可以看到除了星期五之外所有的日子都是灰色的,用红色着色。如果我们想突出某一天,这可能很有用。
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn