通过 gradient_image和gradient_bar函数实现柱状图由上至下的渐变,并自动在柱中生成数据标签:
import warnings
import matplotlib.pyplot as plt
from Format import pic_format
import matplotlib as mpl
import numpy as np
from matplotlib.colors import LinearSegmentedColormap
# 解决中文显示问题的代码
mpl.rcParams["font.sans-serif"] = ["Microsoft YaHei"]
mpl.rcParams['axes.unicode_minus'] = False
warnings.filterwarnings('ignore')
# 设置全局字体及大小,设置公式字体
pic_format()
"""
ax:画板
extent:调整宽高比例
direction:颜色渐变方向
cmap_range:颜色渐变的范围
**kwargs:imshow中的参数
"""
def gradient_image(ax, extent, direction=0, cmap_range=(0, 0.5), **kwargs):
phi = direction * np.pi / 2 # 角度值
v = np.array([np.cos(phi), np.sin(phi)]) # 求解余弦正弦
X = np.array([[v @ [0, 0], v @ [0, 0]],
[v @ [1, 1], v @ [1, 1]]]) # @号代表的是矩阵运算
a, b = cmap_range # 代表着颜色的最小范围和最大范围
X = a + (b - a) / X.max() * X # 用颜色范围调整数值
im = ax.imshow(X, extent=extent, interpolation='bicubic',
vmin=0, vma