旅游网站wordpress,深圳网络营销全网推广,物流网络是指什么,什么是精准营销matplotlib库学习之透明颜色设置 一、简介
在数据可视化中#xff0c;透明度设置可以使图表更具层次感#xff0c;特别是在多层叠加图表时。matplotlib库提供了多种方法来设置图表各个部分的透明度#xff0c;包括图形、文本、图例、坐标轴等部分。
二、为什么要设置成透明… matplotlib库学习之透明颜色设置 一、简介
在数据可视化中透明度设置可以使图表更具层次感特别是在多层叠加图表时。matplotlib库提供了多种方法来设置图表各个部分的透明度包括图形、文本、图例、坐标轴等部分。
二、为什么要设置成透明色?
设置透明色的主要原因包括
方便插入论文中增强视觉效果透明度可以使图形更加柔和避免颜色过于突兀。多图叠加在多个图形叠加时通过透明度可以更清晰地观察每层图形的重叠部分。突出重点通过调整透明度可以突出显示重点数据使图表更加直观易懂。
三、实例
如果不做特别说明我们遵循以下原则 所有出现的【ax】均为坐标轴对象【figure】为画布对象ax和figure是成对出现的调整样式主要是使用【ax】。 figure, ax plt.subplots()所有【plt】开始的函数调用都是我们对未保存的绘图对象的图像的样式设置这种方法不利于在有多个绘图对象时单独处理其中一个。
3.1 实例参考模型不透明
import matplotlib.pyplot as plt
import numpy as np# 设置中文字体
plt.rcParams[font.family] SimHei# 生成数据
x np.linspace(0, 20, 100)
y np.sin(x)# 创建图形和子图并设置画布颜色为 #00C9A7
fig, ax plt.subplots(figsize(10, 6), dpi150, facecolor#00C9A7)ax.plot(x, y)
ax.set_title(图形透明设置-baseline-无透明参考图)
ax.legend([正弦曲线])plt.show()效果 3.2 设置【画布】透明
【3.1】所示的图青色部分以及被绘图区遮住的区域属于画布区域。
需要注意的是下面设置的透明效果由于施加对象是最底层的对象——画布完全透明后用plt.show()画布会呈现白色。如果要看到真正的效果需要将其保存下来【plt.show()】将图片显示后是可以看到保存的按钮。
3.2.1 直接设置透明不创建坐标轴
plt.subplots(figsize(10, 6), dpi150, facecolornone)facecolor该属性用于设置画布背景色默认为#FFFFFF即白色背景。
3.2.2 创建坐标轴时设置透明
fig, ax plt.subplots(figsize(10, 6), dpi150, facecolornone)该处设置同上仅设置的时间不同对绘图效果无影响。
3.2.3 利用【figure.patch.set_alpha(0)】设置画布透明
figure.patch.set_alpha(0)其中fig是plt.figure对象常常由下面的语句给出
figure, ax plt.subplots()3.2.4 示意图 3.2.5 整体代码
import matplotlib.pyplot as plt
import numpy as np# 设置中文字体
plt.rcParams[font.family] SimHei
plt.rcParams[axes.unicode_minus] False# 生成数据
x np.linspace(0, 20, 100)
y np.sin(x)plt.subplots(figsize(10, 6), dpi150, facecolornone)
plt.plot(x, y, label正弦曲线)
plt.title(图形透明设置-baseline-画布透明)
plt.legend()# fig, ax plt.subplots(figsize(10, 6), dpi150, facecolornone)
# ax.plot(x, y)
# ax.set_title(图形透明设置-baseline-画布透明)
# ax.legend([正弦曲线])plt.show()3.3 设置【绘图区背景】透明
如不特别说明本节所有【ax】均为一个坐标轴对象
3.3.1 方法1
ax.patch.set_alpha(0)或
ax.patch.set_facecolor(none)或
ax.set_facecolor(none)3.3.2 方法2
plt.rcParams[axes.facecolor] none该方法设置的是全局参数即每个绘图都会绘图区背景透明除非你单独用方法1、2、3单独设置某个绘图的参数。
3.3.3 绘图区背景透明示意图 3.3.4 测试代码
import matplotlib.pyplot as plt
import numpy as np# 设置中文字体
plt.rcParams[font.family] SimHei
plt.rcParams[axes.unicode_minus] False
# plt.rcParams[axes.facecolor] none# 生成数据
x np.linspace(0, 20, 100)
y np.sin(x)# 创建图形和子图并设置画布颜色为 #00C9A7
fig, ax plt.subplots(figsize(10, 6), dpi150, facecolor#00C9A7)
ax.plot(x, y)# 下面三条为测试效果语句取消注释即可运行
# ax.patch.set_alpha(0)
# ax.set_facecolor(none)
# ax.patch.set_facecolor(none)ax.set_title(图形透明设置-绘图区背景透明)
ax.legend([正弦曲线])plt.show()3.4 设置【绘制的图像】透明
3.4.1 方法1
ax.plot(x, y, alpha0.1)alpha不透明度的设置值越大越不透明
这里不一定是plot可以是散点图三维图柱状图等等。
3.4.2 方法2
plt.legend([正弦曲线], framealpha0)3.4.3 示意图 3.4.4 测试代码
import matplotlib.pyplot as plt
import numpy as np# 设置中文字体
plt.rcParams[font.family] SimHei
plt.rcParams[axes.unicode_minus] False# 生成数据
x np.linspace(0, 20, 100)
y np.sin(x)# 创建图形和子图并设置画布颜色为 #00C9A7
fig, ax plt.subplots(figsize(10, 6), dpi150, facecolor#00C9A7)
ax.plot(x, y, alpha0.1)
ax.set_title(图形透明设置-绘制的数据图像本身透明)
ax.legend([正弦曲线])plt.show()3.5设置【图例】透明
3.5.1 方法1
ax.legend([正弦曲线], framealpha0)framealpha用于设置图例区域的不透明度默认情况下图例是白框打底的。
3.5.2 方法2
plt.legend([正弦曲线], framealpha0)3.5.2 示意图
下图左右部分分别为framealpha1和framealpha0时的效果
可以看到右边部分透明了和背景融为一体。
3.5.3 测试代码
import matplotlib.pyplot as plt
import numpy as np# 设置中文字体
plt.rcParams[font.family] SimHei
plt.rcParams[axes.unicode_minus] False # 生成数据
x np.linspace(0, 20, 100)
y np.sin(x)# 创建图形和子图并设置画布颜色为 #00C9A7
fig, ax plt.subplots(figsize(10, 6), dpi150, facecolor#00C9A7)
ax.plot(x, y)
ax.patch.set_alpha(0)ax.set_title(图形透明设置-图例透明)
ax.legend([正弦曲线], framealpha0)plt.show()3.6 设置【文本】透明
3.6.1 标题文本透明
方法1
ax.set_title(title, alpha0.5)方法2
plt.title(title, alpha0.5)示意图 3.6.2 轴标签文本透明
方法1
ax.set_xlabel(X Axis Label, alpha0.5)
ax.set_ylabel(Y Axis Label, alpha0.5)方法2
plt.xlabel(X Axis Label, alpha0.5)
plt.ylabel(X Axis Label, alpha0.5)示意图 3.6.3 图例文本透明
legend ax.legend([正弦曲线], framealpha0)
for text in legend.get_texts():text.set_alpha(0.1) # 设置图例文本不透明度为 0.1示意图 3.6.4 刻度标签文本透明
方法1
for label in ax.get_xticklabels() ax.get_yticklabels():label.set_alpha(0.5)方法2
plt.setp(ax.get_xticklabels() ax.get_yticklabels(), alpha0.5)示意图 3.8 设置【坐标轴脊线】透明
3.8.1 方法1
plt.gca().spines[top].set_alpha(0)
plt.gca().spines[right].set_alpha(0)
plt.gca().spines[left].set_alpha(0)
plt.gca().spines[bottom].set_alpha(0)或者
for spine in [top, right, left, bottom]:plt.gca().spines[spine].set_alpha(0)3.8.2 方法2
ax.spines[top].set_alpha(0)
ax.spines[right].set_alpha(0)
ax.spines[left].set_alpha(0)
ax.spines[bottom].set_alpha(0)或者
for spine in ax.spines.values():spine.set_alpha(0)或者
for spine in [top, bottom, left, right]:ax.spines[spine].set_alpha(0)3.8.3 示意图 3.8.4 部分示例代码
import matplotlib.pyplot as plt
import numpy as np# 统一设置
title 图形透明设置-坐标轴脊线透明# 设置中文字体
plt.rcParams[font.family] SimHei
plt.rcParams[axes.unicode_minus] False# 生成数据
x np.linspace(0, 20, 100)
y np.sin(x)# 创建图形和子图并设置画布颜色为 #00C9A7
fig, ax plt.subplots(figsize(10, 6), dpi150, facecolor#00C9A7)
ax.plot(x, y)
ax.patch.set_alpha(0)ax.set_title(title, alpha1)
ax.legend([正弦曲线], framealpha0)
for spine in ax.spines.values():spine.set_alpha(0)# fig.savefig(f保存的图片\\{title}.png, dpi300)
# plt.show()3.9 设置【刻度线】透明
3.9.1 方法
ax.tick_params(leftFalse, rightFalse, topFalse, bottomFalse)其实这也不算透明了是直接取消掉了
3.9.2 示意图 3.10 保存图像为透明
3.10.1 代码
plt.savefig(transparent_plot.png, transparentTrue)3.10.2 示意图 四、注意事项
透明度范围透明度的取值范围为0到1其中0表示完全透明1表示完全不透明。如果参数是表示不透明度那么和此处效果描述相反。保存透明图像在保存图像时如果设置了transparentTrue整个图像的背景将是透明的。图表叠加在多图叠加时合理设置透明度可以使图表更加美观但要注意透明度过低可能导致图形难以辨识。性能影响过多使用透明效果可能会增加图像渲染的计算量影响性能。