python-matplotlib

# matplotlib 画图工具
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from pandas.core.series import Series
# 自定义数据
X = Series(np.array([1,2,3,4,5]))
Y = Series(np.array([1,5,2.7,3.8,4.9]))
Y1 = (np.random.random((1,5))*10)[0]
X1 = [1,2,3,4,5]

# =================================================
# 折线图
# xxx 文件有两列组成 DATE(yyyy/MM/dd),VALUE
# unrate = pd.read_csv("xxx")
# 修改日期格式(yyyy-MM-dd)
# unrate['DATE'] = pd.to_datetime(unrate['DATE'])
# plt.plot() # 若不传入数据图像为空(只显示画图域)  只有 xy轴   范围为0-1 (0.0 0.2 0.4 0.6     1.0)
# plt.plot(X,Y) # 线x轴后y轴
# plt.xticks(rotation=45)  # 设置x轴上的数字倾斜角度
# plt.yticks(rotation=45)  # 设置y轴上的数字倾斜角度
# plt.xlabel('x')  # 给xy轴加标签 注意中文可能出错
# plt.ylabel('y')
# plt.title('title')  # 标题
# plt.show()  # 显示图像
# =========================================================
# 子图操作
# fig = plt.figure(figsize=(3,6)) # figsize画图域的长与宽
# fig = plt.figure()
# ax1 = fig.add_subplot(2,2,1)  # 三个画图域  第一张图 左上角序号为1
# ax2 = fig.add_subplot(2,2,2)  # 右上角 序号2
# ax3 = fig.add_subplot(2,2,4)  # 右下角序号4
# 有三个画图域:一张大图  里边三个小图 ,注意尽量保持每个域 中前两个量都相同如全都是(2,2,*) 否则图像可能会重合
#   大图分为 2*2 ,序号从左到右,上到下 1-4
# ax1.plot(X,Y)
# ax2.plot(X,Y)
# =================================================
# 在一个图上画多条线
# fig = plt.figure()
# plt.plot(X,Y,c="red",label="first")  # 添加label,
# plt.plot(X1,Y1,c="blue",label="second")
# plt.legend(loc="best")  # 可以在图中显示 不同线的标注信息
# 指定位置 best 表示自定义最好位置, upper left 左上角  lower ,center left,right等
# ===================================================
# 条形图与散点图
# plt.subplots(X,Y,0.3) # 不能此种方式直接画
# fig,ax = plt.subplots()
# ax.bar(X,Y,0.3) # 0.3表示柱形的宽度
# ax.bar(X1,Y1,0.5)  # X1 表示的是每个柱距离0的大小 Y1是柱的高度
# ax.set_xticklabels(["a","b","c","d","e"],rotation=45) # 定义x轴要显示的内容 本例为1,2,3,4,5
# ax.set_xticks([1,2,3,4,5]) # 指明x轴上1,2,3,4,5那些需要显示
# ax.set_ylabel("y")  # y轴标签
# ax.set_xlabel("x")  # x轴标签
# ax.set_title("title")
# -------------------------------
# 横向柱状图
# fig,ax = plt.subplots()
# ax.barh(X1,Y1,0.3) # x 变为竖着的
# ax.set_yticks()
# ax.set_yticklabels(yy)
# ===================================================
# fig,ax = plt.subplots()
# ax.scatter(X1,Y1)
# ax.set_xlabel("X")
# ax.set_ylabel("Y")
# ---------------------
# 子图
# fig = plt.figure()
# ax1 = fig.add_subplot(2,1,1)
# ax2 = fig.add_subplot(2,1,2)
# ax1 ... ax2 ...

# -----------------
# 直方图
# fig,ax = plt.subplots()
# ax.hist(Y1)
# ax.hist([1,1,1,3,3,3,4,4,4,5,5,5,5,5,5,51])
# ax.set_ylim(0,3) # 设置y轴区间大小
# ax.set_xlim(0,5) # 设置y轴区间大小
# 接受一组数据,假如数据是可比较的,
# 在x轴上会分区间显示, 数值大小在改区间的数的个数  区间个数 通过bins修改
# 通过range=(2,5) 控制x轴显示的范围  只显示2到5范围内的
# ======================================================
# 盒图
# fig,ax = plt.subplots()
# ax.boxplot([[1,2,3],2,3,4,5,6,7])
# ax.set_xticklabels(["a","b"],rotation=90) # x轴上显示的标签
# ax.set_ylim(0.5) # 范围
# boxplot([]) list中可为几个数值,也可以为[] ,即每个[] 对应x上一项
# 注意最多两层 [[],[]] 三层报错
# 图的主要作用是 容易看出一个[] 中四等分出的值
#  a--> 1,1.5,2,2.5,3   b-->2 ....
# ====================================

# fig,ax = plt.subplots()
# ax.tick_params(bottom="on")
# for key,spine in ax.spines.items():
#     spine.set_visible(False)
# ax.plot(X,Y)
# ax.plot(X1,Y1)

# 细节设置
# ax.plot(c=(0/255,10/255,164/255),linewidth=3) # 设置宽度,颜色:颜色使用元祖方式表示,固定格式
# ax.text(x,y,"zz") # 在x,y点处添加zz字符
# plt.show()

 

import matplotlib.pyplot as plt
import json
import numpy as np
import matplotlib
font = {'family': 'MicroSoft YaHei','weight': 'bold','size': 10} # 中文乱码
matplotlib.rc("font", **font)
file = r'temp2.txt'
car = []
bus = []
van = []
others = []
X = []
with open(file,'r') as f:
    data = [json.loads(line) for line in f.readlines()]
for i,line in enumerate(data):
    X.append(i)
    temp = line.get(str(i))
    car.append(temp.get('car'))
    bus.append(temp.get('bus'))
    van.append(temp.get('van'))
    others.append(temp.get('others'))
X = np.divide(X,60)
plt.plot()
plt.plot(X,car,label='car')
plt.plot(X,bus,label='bus')
plt.plot(X,van,label='van')
plt.plot(X,others,label='other')
plt.plot(X,np.sum([car,van,bus,others],axis=0),label='sum')
plt.legend(loc=2)
plt.xlabel('运行时间(分钟)')
plt.ylabel('数量')
plt.title('车辆流统计')
plt.show()

  

posted @ 2019-09-25 18:01  下雨天,真好  阅读(256)  评论(0编辑  收藏  举报