Python 数据可视化:配色方案

1、引言

在这篇文章中,我们将研究Python的一些配色方案,主要是Seaborn库。这将采用 Python Notebook 格式,其中包括绘图的代码。

2、实验数据

首先导入必要的库:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

我们将使用 Seaborn 库的数据集之一,称为“tips”。

数据集摘要如下:

—244 笔餐厅订单交易(行)以及7个特征(列)

  • 账单总额(美元)

  • 小费(美元)

  • 性别(女/男)

  • 吸烟者(是/否)

  • 白天(周六、周日、周四、周五)

  • 时间(午餐、晚餐)

  • 尺寸(范围从1到6)

df = sns.load_dataset("tips")
df.head(7)

3、使用默认样式/调色板

现在让我们使用默认配色方案 (matplotlib) 在 seaborn barplot 中可视化每天的消费额:

sns.barplot(x="tip",y="day",data=df,orient="h")
plt.show()

4、更换样式

有五种样式可供选择,可以使用“set_style”或“set”来更改其余部分的图形样式。

句法:sns.set_style(“darkgrid”)

plt.figure(figsize=(9,8))
for i,style in enumerate(["white", "whitegrid", "dark", "darkgrid", "ticks"]):
    sns.set(style=style)
    plt.subplot(3,2,i+1)
    sns.barplot(x="tip",y="day",data=df,orient="h")
    plt.ylabel(None)
    plt.title("style: '"+style+"'",fontweight="bold")
plt.tight_layout()
plt.show()

现在我们的绘图样式是for循环中最新应用的样式,即“ticks”

sns.barplot(x="tip",y="day",data=df,orient="h")
plt.show()

如果想在不同部分使用不同的样式。可以使用“with”语句临时设置样式,该语句仅将样式应用于其下的绘图。

语法:with sns.axes_style(“darkgrid”)

with sns.axes_style("darkgrid"):
    sns.barplot(x="tip",y="day",data=df,orient="h")
plt.show()

5、更改调色板

除了定义样式之外,还可以调整调色板:

语法:sns.set(palette=”muted”)

可用的调色板名称:

Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r, cividis, cividis_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r, hsv, hsv_r, icefire, icefire_r, inferno, inferno_r, jet, jet_r, magma, magma_r, mako, mako_r, nipy_spectral, nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, rocket, rocket_r, seismic, seismic_r, spring, spring_r, summer, summer_r, tab10, tab10_r, tab20, tab20_r, tab20b, tab20b_r, tab20c, tab20c_r, terrain, terrain_r, twilight, twilight_r, twilight_shifted, twilight_shifted_r, viridis, viridis_r, vlag, vlag_r, winter, winter_r

sns.set(style="darkgrid",palette="Set2") 
sns.barplot(x="tip",y="day",data=df,orient="h") 
plt.show()

或者,可以使用以下语法来完全更改样式和调色板:plt.style.use(“ggplot”)

26种款式可选,“seaborn-muted”很好看。

plt.figure(figsize=(15,20)) 
for i,style in enumerate(plt.style.available): 
    with plt.style.context(style): #with 关键字允许临时更改样式
        plt.subplot(9 ,3,i+1) 
        sns.barplot(x="tip",y="day",data=df,orient="h") plt.ylabel 
        (style) 
plt.tight_layout() 
plt.show()

现在可视化一些喜欢的样式,并看看它们在不同类型的图表中的外观:

sns.set(style="darkgrid")
palettes = ["muted","Set2","Set2_r","Pastel1","Pastel2","tab20"]
plt.figure(figsize=(15,24))
for i,palette in enumerate(palettes):
    plt.subplot(len(palettes),3,3*i+1)
    sns.set(palette=palette)
    sns.barplot(x="tip",y="day",data=df,orient="h")
    plt.title(palette,fontweight="bold",fontsize=15)
    plt.subplot(len(palettes),3,3*i+2)
    df["sex"].value_counts().plot.pie(autopct="%.1f%%", pctdistance=0.8,
                   wedgeprops=dict(width=0.4))
    plt.title(palette,fontweight="bold",fontsize=15)
    ax3 = plt.subplot(len(palettes),3,3*i+3)
    df[["tip","total_bill","size"]].plot(ax=ax3)
    plt.title(palette,fontweight="bold",fontsize=15)
plt.tight_layout()
plt.show()

或者,对于散点图和线图,可以使用plt.cm.get_cmap()语法来选择调色板

import numpy as np
palette="Spectral"
plt.figure(figsize=(10,6))
plt.scatter(df.total_bill,df.tip,s=df["size"]**5,alpha=0.8,
c=np.arange(1,df.shape[0]+1),cmap=plt.cm.get_cmap(palette,df.shape[0]))

假设想要可视化数值变量的分布(“total_bill”、“tip”、“size”),但是由于它们的值范围不同,图表看起来不太漂亮:

sns.set(palette="Set2") 
plt.figure(figsize=(15,4)) 
for i,col in enumerate(["total_bill","tip","size"]): 
    sns.distplot(df[ col],label=col) 
plt.xlabel("值") 
plt.legend() 
plt.show()

让我们在循环中使用子图来绘制它们。我们需要一个新函数来按照调色板的顺序进行颜色分布,否则它们将具有相同的颜色。

语法:sns.color_palette(“Set2”)

plt.figure(figsize=(15,4)) 
for i,col in enumerate(["total_bill","tip","size"]): 
    plt.subplot(1,3,i+1) 
    sns.distplot( df[col],color=sns.color_palette("Set2")[i]) 
    
plt.show()

6、手动着色

最后,可以手动选择自己的颜色集,而不是使用样式和调色板。

sns.boxplot(x=df.tip,y=df.day,hue=df.sex,palette=["salmon","darkslateblue"]) 
plt.show()

from  matplotlib.axes._axes  import _log as matplotlib_axes_logger 
matplotlib_axes_logger.setLevel('ERROR')
sns.boxenplot(x=df.tip,y=df.day,palette=["rosybrown","tab:olive","cornflowerblue","lightsteelblue","plum","sandybrown"]) 
plt.show()

sns.countplot(y="size",data=df,palette=["c","y","m","pink","deepskyblue","k"])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/370694.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Vue】3-2、组合式 API

一、setup 选项 <script> export default {/*** 1、setup 执行时机早于 beforeCreate* 2、setup 中无法获取 this* 3、数据和函数需要在 setup 最后 return&#xff0c;才能在模板中使用* 4、可以通过 setup 语法糖简化代码*/setup(){// console.log(setup function, thi…

Flink容错机制

目录 一&#xff0c;检查点&#xff1a; 二&#xff0c;保存点&#xff1a; ①版本管理和归档存储&#xff1a; ②更新Flink版本&#xff1a; ③更新应用程序&#xff1a; ④调整并行度&#xff1a; ⑤暂停应用程序&#xff1a; Flink容错机制 一&#xff0c;检查点&#xff…

RedHat8.4安装邮件服务器

一、配置发件服务器 1.1 根据现场IP&#xff0c;配置主机名 vim /etc/hosts 192.168.8.120 mail.test.com 将主机名更改为邮件服务器域名mail.test.com 1.2 关闭防火墙&#xff0c;禁止开机启动 systemctl stop firewalld systemctl disable firewalld 1.3 关闭selinux v…

java之ReentrantLock

在讲RentrantLock之前需要先讲一下AQS和LockSupport&#xff0c;因为rentrantLock底层是用AQS实现的&#xff0c;而AQS中获取阻塞和唤醒底使用LockSupport实现的。 1、LockSupport实现 下面代码中&#xff0c;LockSupport.park方法是当前线程等待&#xff0c;直到获得许可&am…

React Native学习记录

一、创建RN项目的时候是空文件夹的问题 1.使用npx react-native init RNDemos初始化项目的时候&#xff0c;会报错&#xff0c;模版错误&#xff0c;然后创建出来一个空的文件夹 2.如果出现这种情况&#xff0c;需要设置npm install -g react-native-cli 3.安装完成以后再次初…

Postgres与DynamoDB:选择哪个数据库

启动新项目时需要做出的决定之一是使用哪个数据库。如果您使用的是Django这样的包含电池的框架&#xff0c;那么没有理由再三考虑。选择一个受支持的数据库引擎&#xff0c;就可以了。另一方面&#xff0c;如果你使用像FastAPI或Flask这样的微框架&#xff0c;你需要自己做出这…

聚簇索引、回表与覆盖索引

聚簇索引一般指的是主键索引&#xff08;如果存在主键索引的话&#xff09;。 作为一个正常开发&#xff0c;建表时主键肯定是必须的。 而即使如果表中没有定义主键&#xff0c;InnoDB 会隐式选择一个唯一的非空索引代替。 所以我们就直接含糊点说&#xff1a; 聚簇索引就是…

crmebAI名片小程序全开源全端uniapp

应用介绍 AI名片小程序是一种基于人工智能技术的数字化智能名片&#xff0c;具有多种功能和特点。以下是AI名片小程序的简介&#xff1a; 智能化管理&#xff1a;AI名片小程序具备智能化的管理系统&#xff0c;用户可以方便地管理名片信息&#xff0c;包括个人信息、职位、公司…

jmeter-02切换中文,改为白色背景

文章目录 一、切换中文问题&#xff1a;jmeter设置中文后无法保存&#xff0c;下次启动还是英文 二、改为白色背景 一、切换中文 问题&#xff1a;jmeter设置中文后无法保存&#xff0c;下次启动还是英文 解决办法&#xff1a; 在jmeter路径下找到文件jmeter.bat开启编辑模式&…

如何在Shopee平台上进行手机类目选品?

在Shopee平台上进行手机类目的选品是一个关键而复杂的任务。卖家需要经过一系列的策略和步骤&#xff0c;以确保选品的成功和销售业绩的提升。下面将介绍一些有效的策略&#xff0c;帮助卖家在Shopee平台上进行手机类目选品。 先给大家推荐一款shopee知虾数据运营工具知虾免费…

指针的学习2

目录 数组名的理解 使用指针访问数组 一维数组传参的本质 冒泡排序 二级指针 指针数组 指针数组模拟二维数组 数组名的理解 数组名是数组首元素的地址 例外&#xff1a; sizeof(数组名),sizeof中单独放数组名&#xff0c;这里的数组名表示整个数组&#xff0c;计算的…

从零开始手写mmo游戏从框架到爆炸(三)— 服务启动接口与网络事件监听器

上一章我们完成了netty服务启动的相关抽象&#xff08;https://blog.csdn.net/money9sun/article/details/136025471&#xff09;&#xff0c;这一章我们再新增一个全局的服务启动类&#xff0c;方便后续扩展。 服务启动 新增的两个类如下&#xff1a; 定义一个接口IServer …

6款超好用的IDEA插件,开发必备!

今天给大家介绍几款开发必备的IDEA插件&#xff1a; JRebel 热部署插件&#xff0c;让你在修改完代码后&#xff0c;不用再重新启动&#xff0c;很实用&#xff01;但是&#xff0c;不是免费的&#xff0c;需要大家继续发挥下自己的聪明才智才能happy的使用 Json Parser 厌倦…

Linux 多线程 | 线程的概念

线程的概念 线程是一个执行分支&#xff0c;执行粒度比进程更细&#xff0c;调度成本更低&#xff1b; 线程是进程内部的一个执行流&#xff1b; 线程是CPU调度的基本单位&#xff0c;进程是承担分配系统资源的基本实体。 之前我们学习过虚拟地址空间的知识&#xff0c;知道…

SpringFramework实战指南(五)

SpringFramework实战指南(五) 4.3 基于 注解 方式管理 Bean4.3.1 实验一: Bean注解标记和扫描 (IoC)4.3.2 实验二: 组件(Bean)作用域和周期方法注解4.3.3 实验三: Bean属性赋值:引用类型自动装配 (DI)4.3.4 实验四: Bean属性赋值:基本类型属性赋值 (DI)4.3.5 实验五:…

区块链游戏解说:Axie Infinity 是什么

数据源&#xff1a;Axie Infinity Dashboard 作者&#xff1a;lesleyfootprint.network 什么是 Axie Infinity Axie Infinity 是一个引人入胜的区块链游戏&#xff0c;让玩家可以探索一个充满独特且可收藏的 NFT 生物&#xff08;称为 Axies&#xff09;的世界。 Axie Infin…

[AIGC] 21世纪Java与Go的相爱相杀

在21世纪的软件开发领域中&#xff0c;Java和Go这两门编程语言可谓是相爱相杀的存在。它们各自拥有着强大的特点和独特的优势&#xff0c;同时也存在着一些明显的竞争和冲突。让我们来看看这两门语言的故事&#xff0c;以及它们之间的深远意义。 文章目录 Java的魅力Go的魅力相…

【Simulink系列】——动态系统仿真 之 简单系统

引入 不同的系统具有不同的输入与输出。一般来说&#xff0c;输入输出数目越多&#xff0c;系统越复杂。最简单的系统只要一个输入一个输出&#xff08;SISO&#xff09;&#xff0c;且其任意时刻的输出只与当前时刻的输入有关。 一、简单系统定义 对于满足下列条件的系统&a…

Qt拖拽事件,实现控件内项的相互拖拽

文章目录 1拖拽演示2 步骤3 实现 这里主要以QTableview控件为例&#xff0c;实现表格内数据的相互拖拽。 1拖拽演示 2 步骤 自定以QTableView类&#xff0c;在自定义类中重写拖拽事件&#xff1a; void dropEvent(QDropEvent *event); void dragEnterEvent(QDragEnterEvent *…