matplotlib数据可视化 笔记3(上)

#day03-matplotlib数据可视化
import numpy as np
#01-数组的重复与去重

#创建数组
arr=np.array([])
#对数组进行去重
#unique 1,去重且排序
#注意:unique排序效果 对中文数组不太适用
arr.np.unique(arr)
print('数组去重的结果为:\n',arr)

#重复操作
arr.np.arange(9).reshape((3,3))
print('arr:\n',arr)
 
#tile --重复的对象是整个数组
#参数为整数时,默认在列的方向上进行重复
res=np.tile(arr,2)
#参数为形状时,在各个维度上进行重复
res=np.tile(arr,(2,2))
res=np.tile(arr,(2,2,2))
print('res:\n',res)

#repeat --重复的对象应该是 整行、整列 或者单个元素
#将 整列作为整体 向列的方向进行重复
res=np.repeat(arr,2,axis=1)
#默认先将数组展开为1维之后,在重复的是每一个元素
res=np.repeat(arr,2)
res=np.repeat(arr,[1,2,3],axis=1)
#将整行 作为整体,重复指定的次数
print('res:\n',res)

#02-数组的统计分析
#sum 计算数组的和
#mean 计算数组均值
#std 计算数组标准差
#var 计算数组方差
#min 最小值
#max 最大值
#argmin 最小值的下标
#argmax 最大值的下标
#cumsum 累积和
#cumprod 累积积

#创建数组
arr=np.arange(9).reshape((3,3))
print('arr:\n',arr)
格式:print(np.sum/mean/std/var/min/max/argmin/argmax/cumsum/cum/prod(arr,0))

#如果不指定轴,默认统计整个数组
print('统计arr的累积积:\n',np.cumprod(arr))

#03-案例:iris花萼长度统计分析案例
import numpy as np

#加载数据
iris_data=np.loadtxt('./iris_sepal_length.csv')
print('iris_data:\n',iris_data)

#排序
iris_data.sort()
print('排序之后的结果:\n',iris_data)

#去重
iris_data=np.unique(iris_data)
print('去重之后的结果:\n',iris_data)

#求和
sum_iris_data=np.sum(iris_data,axis=0)
print('求和的结果:\n',sum_iris_data)

#累积和
cumsum_iris_data=np.cumsum(iris_data,axis=0)
print('求累积和的结果:\n',cumsum_iris_data)

#均值
mean_iris_data=np.mean(iris_data,axis=0)
#标准差
std_iris_data=np.std(iris_data,axis=0)
#方差
var_iris_data=np.var(iris_data,axis=0)
#最大值
max_iris_data=np.max(iris_data,axis=0)
#最小值
min_iris_data=np.min(iris_data,axis=0)

#shape (x,) --axis=0
#(x,y) axis=0
#(x,y,z) axis=0 

#04- matplotlib的初步认识
#matplotlib---数据可视化的库
#不仅可以绘制2-D图,也可以绘制3-D图
绘图三部曲
 1,创建画布
 2,绘图三部曲
 3,图形展示
 
#下一周北京天气温度的走势图--折线图
#1,创建画布
#figsize--画布的大小
#dpi--像素
#返回--画布对象
plt.figure()

#2,绘制图形
#绘制折线图--要素:点--要素:坐标
#构建坐标进行描点--(x1,y1) (x2,y2)...
#先构建横坐标---维数组
#注意:如果横坐标数中文字符串形式的,先用序号代替,后续用字符串替代序号
#在构建纵坐标---与横坐标---对应的纵坐标的值
x=np.arange(1,8)#[1,2,3,4,5,6,7]
y=np.array([-10,-8,-6,-10,-12,-4,2])
#绘制折线图
plt.plot(x,y)

#3,图形展示
plt.show()

#05-图形修饰 --以后都是这种模板
import matplotlib.pyplot as plt
import numpy as np

# 下一周北京天气温度的走势图 ---折线图
# 1、创建画布
# figsize --画布的大小
# dpi --像素
# 返回--画布对象
plt.figure()
# 修改RC参数,让其支持中文
plt.rcParams['font.sans-serif'] = 'SimHei'
# 再去修改RC参数,让其支持负号
plt.rcParams['axes.unicode_minus'] = False

# 2、绘制图形
# 绘制折线图----要素:点------要素:坐标
# 构建坐标进行描点 ---(x1,y1)  (x2,y2) ...
# 先构建横坐标--一维数组
# 注意:如果横坐标是中文字符串形式的,先用序号代替,后续呢,用字符串替换序号
# 在构建纵坐标--与横坐标一一对应的纵坐标的值
x = np.arange(1, 8)  # [1,2,3,4,5,6,7]
y1 = np.array([-10, -8, -6, -10, -12, -4, 2])  # 北京天气
y2 = np.array([26, 24, 22, 24, 25, 20, 18])  # 广州天气
# 绘制折线图
# color --线的颜色
# linestyle --线的样式
# linewidth ---线的宽度
# marker ---点的形状
# markersize --点的大小
# markerfacecolor --点的填充颜色
# markeredgecolor ---点的边缘颜色
# 更多的样式及颜色可以参考:https://www.cnblogs.com/darkknightzh/p/6117528.html
plt.plot(x, y1, color='r', linestyle=':', linewidth=1.2, marker="*", markersize=7, markerfacecolor='b',
         markeredgecolor='g')
plt.plot(x, y2, color='b', linestyle='-.', linewidth=1.2, marker="o", markersize=7, markerfacecolor='y',
         markeredgecolor='g')
# 因为有的修饰可以放在绘图之前,也可以放在绘图之后,但是其中的部分必须放在绘图之后,才进行功能显示
# 要求:所有的修饰都放在绘制之后
# 增加标题
plt.title("下一周北京、广州天气温度的走势图")
# 增加横轴名称
plt.xlabel("日期")
# 增加纵轴名称
plt.ylabel("温度℃")

# 将横轴上的序号替换为 真实中文字符串
# 修改横轴刻度
# 如果需要用中文来修改刻度时候
# 参数1 将要被替换的序号
# 参数2 需要替换的中文字符串
xticks = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
# 注意:替换的序号,需要与替换的中文字符串必须是一一对应的替换
plt.xticks(x, xticks)

# 如果只是修改数值的取值范围---重新设置刻度
# 参数 新的刻度
# 修改纵轴刻度
yticks = np.arange(-15, 31, 3)
plt.yticks(yticks)

# 增加图例
# loc ---调整图例的位置
plt.legend(["北京温度", "广州温度"], loc=0)

# 进行标注
for i, j in zip(x, y1):
    # 参数1 标注的横坐标
    # 参数2 标注的纵坐标
    # 参数3 标注的内容
    #  horizontalalignment='center' ---让标注水平居中
    plt.text(i, j + 0.7, "%d℃" % j, horizontalalignment='center')

for i, j in zip(x, y2):
    # 参数1 标注的横坐标
    # 参数2 标注的纵坐标
    # 参数3 标注的内容
    #  horizontalalignment='center' ---让标注水平居中
    plt.text(i, j + 0.7, "%d℃" % j, horizontalalignment='center')


# 保存图片---必须放置在所有修饰之后,show之前
plt.savefig("./下一周北京、广州天气温度的走势.png")

# 3、图形展示
plt.show()


#06-

发布了128 篇原创文章 · 获赞 24 · 访问量 4263

猜你喜欢

转载自blog.csdn.net/return_min/article/details/103889610
今日推荐