![](../images/数据可视化.png)
数据可视化
10种图例
1. 直线图
![image-20230130163439488](../images/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20230130163439488.png)
2. 条形图
![image-20230130163343898](../images/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20230130163343898.png)
3. 水平条形图
![image-20230130163255538](../images/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20230130163255538.png)
4. 饼图
![image-20230130163146291](../images/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20230130163146291.png)
5. 散点图
![image-20230130163509280](../images/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20230130163509280.png)
6. 六角箱图
![image-20230130163538952](../images/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20230130163538952.png)
7. 直方图
![image-20230130163606908](../images/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20230130163606908.png)
8. 密度图
![image-20230130163654651](../images/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20230130163654651.png)
9. 箱形图
![image-20230130163726429](../images/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20230130163726429.png)
10. 面积图
![image-20230130163751192](../images/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20230130163751192.png)
Matplotlib
![image-20230130164036533](../images/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96.assets/image-20230130164036533.png)
使用matplotlib绘制图片
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# s = pd.Series(
# [1, 2, 3],
# index=list('ABC')
# )
# print(s)
#
# s.plot()
# 创建Df
df = pd.DataFrame({
"A": [1, 2, 3, 4]
})
df["B"] = df["A"] ** 2
print(df)
# 开始绘图
# 统一建议设置
plt.rcParams['axes.unicode_minus'] = False
# mac 设置中文字体
plt.rcParams['font.sans-serif'] = ['Hiragino Sans GB']
# windows 中文设置
# plt.rcParams['font.sans-serif'] = ['SimHei']
"""
设置样式
facecolor: 更改背景色为白色
figsize: 长宽
dpi: 像素
6*100 6*100
"""
plt.figure(facecolor="white", figsize=(6, 6), dpi=100)
# 创建常见默认x,y
plt.plot(df["A"], df["B"])
"""
设置标题
fontsize: 字体大小
color: 颜色
rotation: 旋转角度
labelpad: 标题与表间隔
"""
plt.title("我是标题", fontsize=30, color='r')
plt.xlabel("X轴", fontsize=24, color='g')
plt.ylabel("Y轴", fontsize=24, color='b', rotation=0, labelpad=15)
# 坐标轴值的区间
plt.xlim([-1, 5])
plt.ylim([0, 20])
# 坐标轴的值 也可以进行样式设置
# plt.xticks([1, 2, 3, 4, 5], fontsize=20)
# plt.yticks([0, 5, 10, 15, 20], fontsize=20)
# major:主刻度 minor:次刻度
# x轴 每个值之间的间距
plt.gca().xaxis.set_major_locator(
plt.MultipleLocator(2)
)
# x轴 每个值之间刻度标
plt.gca().xaxis.set_minor_locator(
plt.MultipleLocator(0.5)
)
# y轴 每个值之间的间距
plt.gca().yaxis.set_major_locator(
plt.MultipleLocator(5)
)
# y轴 每个值之间刻度标
plt.gca().yaxis.set_minor_locator(
plt.MultipleLocator(1)
)
# 网格展示,加颜色
plt.grid(color='y')
plt.show()
实战
import uuid
import time
import datetime
import traceback
import matplotlib.pyplot as plt
# 关闭交互模式
plt.switch_backend('Agg')
# 关闭告警
plt.set_loglevel('WARNING')
def data_2_line_chart(x, y, label, event_time):
"""
将数据绘制为折线图
:param: x 轴数据
:param: y 轴数据
:param: label 指标 e.g. test11
:param: event_time 活动时间 e.g. {'start_time': 66666666666, 'end_time': 755555555555}
:return: image_path + name
"""
name = uuid.uuid4()
path = f'{name}.png'
# 背景:白色,大小:2500*600
fig, ax = plt.subplots(facecolor="white", figsize=(25, 6), dpi=100)
# 去除上左右边框
ax.spines['top'].set_color('none')
ax.spines['left'].set_color('none')
ax.spines['right'].set_color('none')
# 绘制,加实心·
ax.plot(x, y, marker='o')
# 填充指定区间
x_fill = [i for i in x if event_time["start_time"] > i > event_time["end_time"]]
ax.fill_between(x_fill, 0, max(y), alpha=0.3, facecolor='r')
# y轴数据
# ax.set_ylim([0, max(MetricValue)])
# 设置就在 y 轴方向显示网格线
ax.grid(axis='y', color='gray', linestyle='--')
# 指标
ax.legend(frameon=False, labels=[label], bbox_to_anchor=(0, 1.02), loc=3, borderaxespad=0)
# x轴,每个值之间1个刻度
ax.xaxis.set_minor_locator(
plt.MultipleLocator(1)
)
# x轴,每8个值展示
ax.xaxis.set_major_locator(
plt.MultipleLocator(8)
)
# 保存图片
ax.figure.savefig(path)
plt.close(fig)
return path
觉得文章写的不错,可以请喝杯咖啡
- Post link: https://yanxiang.wang/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.