引入
什么是折线图:
折线图是排列在工作表的列或行中的数据可以绘制到折线图中。折线图可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。
在折线图中,类别数据沿水平轴均匀分布,所有值数据沿垂直轴均匀分布。
以上引用自 百度百科 ,简单来说一般折线图 是以时间作为 X 轴 数据 作为 Y轴,这当然不是固定的,是可以自行设置的。
话不多说~ 进入正题
第一种画法:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdate
from matplotlib.pyplot import rcParams
%matplotlib inline
# 防止中文乱码
rcParams['font.sans-serif'] = 'kaiti'
# 生成一个时间序列
time =pd.to_datetime(np.arange(0,11), unit='D',
origin=pd.Timestamp('2019-01-01'))
# 生成数据
data = np.random.randint(10,50,size=11)
# 创建一个画布
fig = plt.figure(figsize=(12,9))
# 在画布上添加一个子视图
ax = plt.subplot(111)
# 这里很重要 需要 将 x轴的刻度 进行格式化
ax.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))
# 为X轴添加刻度
plt.xticks(pd.date_range(time[0],time[-1],freq='D'),rotation=45)
# 画折线
ax.plot(time,data,color='r')
# 设置标题
ax.set_title('折线图示例')
# 设置 x y 轴名称
ax.set_xlabel('日期',fontsize=20)
ax.set_ylabel('销售量',fontsize=20)
- 注解
- x 轴接收的日期类型 必须是下图:
2.关于 pd.to_time() 中的参数 其中 uint = ‘D’ 表示 0~10 中全天 origin=pd.Timestamp(‘2019-01-01’) 表示起源 也就是 从 1月1号开始算起
3.ax.xaxis.set_major_formatter(mdate.DateFormatter(’%Y-%m-%d’)) 如果想要显示 x轴为日期类型 必须使用 格式化 格式化可以自行设置
4.pd.date_range(time[0],time[-1],freq=‘D’) 不要忘记还需要自己手动添加刻度
第二种画法:
import pyecharts.options as opts
from example.commons import Faker
from pyecharts.charts import Line
import pandas as pd
# 处理一下时间
start = '2019-01-01'
end = '2019-01-10'
t = pd.date_range(start=start,end=end).tolist()
time_ = []
for i in t:
i = str(i)[:-8]
time_.append(i)
def line_base() -> Line:
c = (
Line()
.add_xaxis(time_)
.add_yaxis("商家A", np.random.randint(100,400,size=10).tolist())
.add_yaxis("商家B", np.random.randint(100,400,size=10).tolist())
.set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例"),
yaxis_opts=opts.AxisOpts(name='商家销售情况'),
xaxis_opts=opts.AxisOpts(name='销售日期')
)
)
return c
# 在 jupyter notebook 上渲染
line_base().render_notebook()
ps: 如果觉得链式调用不习惯的话 可以 去 翻看我之前发表的 数据可视化博客 里面有具体的例子~