CB91_Blue = '#2CBDFE'CB91_Green = '#47DBCD'CB91_Pink = '#F3A0F2'CB91_Purple = '#9D2EC5'CB91_Violet = '#661D98'CB91_Amber = '#F5B14C'
如果你想创建自己的调色板,有一些有用的工具可以在线帮助比如 Colormind.io通过深度学习从照片、电影和流行艺术中学习色彩风格,因此色调搭配得很好通过上述代码定义了颜色集,就可以将其声明为一个颜色列表,然后更改 Matplotlib 的颜色库 cyclercolor_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(图片来源网络,侵删)
0 评论