图表默认值MatplotlibSeaborn(图表颜色代码默认值坐标轴)「matplotlib 坐标轴颜色」

如果您曾经在 Python 中进行过数据可视化,那么很可能您使用了 Matplotlib 库
这个库包含了许多绘图的功能
但是一些概念上简单的可视化需要大量的代码才能完成
而在这个时代,人们希望能够与图表进行交互——这是普通 Matplotlib 库无法提供的功能
更重要的是,采用默认设置的 Matplotlib 图表通常看起来很糟糕
当然,默认的 Matplotlib 设置能够使得您的可视化视觉效果看起来十分朴素,但是显然是有点过时的
它默认的蓝色阴影通常难以满足许多数据科学家的需求
采取默认设置的柱状图 稍加调整的柱状图同时,Matplotlib 的一个不足之处在于它的可定制性
您可以创建非常复杂的视觉效果,但是不可否认,实现复杂的视觉效果需要很多行代码,而大部分数据科学家很少有太多时间用于这一方面
不想每个 plot 都有那个烦人的边框吗? 想使用您品牌的调色板而不必每次都指定十六进制代码吗? 要对所有图表标签使用 Comic Sans 字体吗? 寻求专业库的帮助吧
颜色设置Matplotlib 中有自带的颜色系统(例如广为人知的"bisque"、"lavenderblush" 和 "lightgoldenrodyellow"),绘图时可以通过十六进制代码的形式设置颜色
可以很方便地自定义调色板
例如, CB91 字体的背景通过一组预定义的颜色代码进行设置
上图使用到的颜色代码有:CB91_Blue = '#2CBDFE'CB91_Green = '#47DBCD'CB91_Pink = '#F3A0F2'CB91_Purple = '#9D2EC5'CB91_Violet = '#661D98'CB91_Amber = '#F5B14C'如果你想创建自己的调色板,有一些有用的工具可以在线帮助
比如 Colormind.io通过深度学习从照片、电影和流行艺术中学习色彩风格,因此色调搭配得很好
通过上述代码定义了颜色集,就可以将其声明为一个颜色列表,然后更改 Matplotlib 的颜色库 cycler
color_list = [CB91_Blue, CB91_Pink, CB91_Green, CB91_Amber, CB91_Purple, CB91_Violet]plt.rcParams['axes.prop_cycle'] = plt.cycler(color=color_list)现在,就成功替换了 Matplotlib 绘图所需的默认颜色库,当新建一个多系列绘图时,将会在 cycler 中按顺序进行检索并设置各个系列的颜色
您还可以使用十六进制颜色列表定义渐变颜色,但是需要在列表中定义许多十六进制值(至少40个)
手动创建这么长的列表可能会很麻烦,这里我建议使用colordesigner.io自动生成所需列表(只需选择要渐变的颜色,最大化渐变步数,然后从生成的HTML中提取十六进制代码)
如下代码展示了我使用的一个十六进制颜色列表(介于蓝色和紫色):#A list of hex colours running between blue and purpleCB91_Grad_BP = ['#2cbdfe', '#2fb9fc', '#33b4fa', '#36b0f8', '#3aacf6', '#3da8f4', '#41a3f2', '#449ff0', '#489bee', '#4b97ec', '#4f92ea', '#528ee8', '#568ae6', '#5986e4', '#5c81e2', '#607de0', '#6379de', '#6775dc', '#6a70da', '#6e6cd8', '#7168d7', '#7564d5', '#785fd3', '#7c5bd1', '#7f57cf', '#8353cd', '#864ecb', '#894ac9', '#8d46c7', '#9042c5', '#943dc3', '#9739c1', '#9b35bf', '#9e31bd', '#a22cbb', '#a528b9', '#a924b7', '#ac20b5', '#b01bb3', '#b317b1'] 坐标轴调整Seaborn 是一个以 Matplotlib 为基础的库,可以通过一两行代码创建更复杂的图表类型(如 Heatmaps、Violins 和 Joint Plots)
通过 Seaborn 生成的 heatmapSeaborn 的一个鲜为人知的特性是它能够使用.set方法控制 Matplotlib 默认值设置(改变颜色、坐标轴和默认字体)
我们还可以使用 .set_context()方法调整字体大小设置
详细资料可以查看官方教程
下面是一个简单的例子:import matplotlib.pyplot as pltimport seaborn as snssns.set(font=’Franklin Gothic Book’, rc={ ‘axes.axisbelow’: False, ‘axes.edgecolor’: ‘lightgrey’, ‘axes.facecolor’: ‘None’, ‘axes.grid’: False, ‘axes.labelcolor’: ‘dimgrey’, ‘axes.spines.right’: False, ‘axes.spines.top’: False, ‘figure.facecolor’: ‘white’, ‘lines.solid_capstyle’: ‘round’, ‘patch.edgecolor’: ‘w’, ‘patch.force_edgecolor’: True, ‘text.color’: ‘dimgrey’, ‘xtick.bottom’: False, ‘xtick.color’: ‘dimgrey’, ‘xtick.direction’: ‘out’, ‘xtick.top’: False, ‘ytick.color’: ‘dimgrey’, ‘ytick.direction’: ‘out’, ‘ytick.left’: False, ‘ytick.right’: False})sns.set_context("notebook", rc={"font.size":16, "axes.titlesize":20, "axes.labelsize":18})定义自己的默认设置文件每次都将前文所提及的所有设置代码写在 Jupyter notebook 前面,会显得整个代码不够简洁
这一点在需要涉及众多十六进制颜色声明时尤其明显
并且也不利于在多个 notebook 中重复使用
因此,将相关代码统一集成到一个代码文件里,然后在需要时对其进行调用,是一个十分有效的方法
这样每次编写代码时,只需要在开始部分引入该 .py 文件即可
Bring in data visualisation libraries as usualimport matplotlib.pyplot as plt%matplotlib inlineimport seaborn as sns#Bring in our custom settings#Assumes that cb91visuals.py is in the repo's root folderfrom cb91visuals import 其它技巧除了颜色、坐标轴、字体设置外,Matplotlib/Seaborn 还可以对以下内容进行设置
· 图例框:图例周围的小框通常是不必要的,并且增加了视觉上的混乱
可通过以下方式关闭:plt.legend(frameon=False)· 删除坐标轴:有时我们想删除一个轴,这可以通过 Seaborn 的 destine 方法完成(根据需要指定左、右、上或下):sns.despine(left=True, bottom=True)· 柱状图上的数字标签:这是软件包中真正应该提供的功能,您可以使用 for looping 和 Matplotlib 的 .text()方法将数字标签添加到柱状图列的顶部
#Here, 'labels' refers to the bigrams on the y-axis#i.e. 'Look forward', 'Jó éjt', etc.#and X is the list of values determining bar length#Loop through these labelsfor n, i in enumerate(labels): #Create an axis text object ax.text(X[n]-0.003, #X location of text (with adjustment) n, #Y location s=f'{round(X[n],3)}%', #Required label with formatting va='center', #Vertical alignment ha='right', #Horizontal alignment color='white', #Font colour and size fontsize=12)通过上述代码实现了在水平柱状图上添加数字标签
作者:Callum Ballarddeephub翻译组:Oliver Lee
图表默认值MatplotlibSeaborn(图表颜色代码默认值坐标轴)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息