1. 程式人生 > 其它 >大資料視覺化(三)時間資料視覺化

大資料視覺化(三)時間資料視覺化

技術標籤:大資料視覺化筆記資料視覺化

時間分為連續型時間和離散型時間

連續型時間資料視覺化

階梯圖

曲線保持在同一個值,直到發生變化,直接跳躍到下一個值,類似、

# datax = [1995,1996,1997,1998, 1999,2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,2009]
# int資料當x軸顯示不出資料
datax = ['1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008','2009']
datay = [0.32, 0.32, 0.32, 0.32, 0.33, 0.33, 0.34, 0.37, 0.37, 0.37, 0.37, 0.39, 0.41, 0.42, 0.44]
line=(
    Line()
    .add_xaxis(datax)
    .add_yaxis("",datay,is_step=True)#is_step為false則為折線圖

    .set_global_opts(title_opts=opts.TitleOpts("階梯圖"),
                     yaxis_opts=opts.AxisOpts(min_=0.3),
                     )
    .set_series_opts()
    .render("result/jieti.html")
)

折線圖:

顯示資料的變化趨勢

#圖3-6
#pyecharts實現

data=pd.read_csv("data/world-population.csv")
datax=data["Year"]
datay=data["Population"]
line=(
    Line()
    .add_xaxis(datax)
    # .add_xaixs(datax)
    .add_yaxis("",datay)
    .set_global_opts(title_opts=opts.TitleOpts("sdfjsgjfs"),
                     xaxis_opts=opts.AxisOpts(min_="1960"),
                     yaxis_opts=opts.AxisOpts(min_=3000000000),
                     )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .render("test.html")
)

#matplotlib實現
plt.plot(datax,datay)
plt.show()

擬合曲線(matplotlib實現的可能不考)

根據給定的離散資料點繪製的曲線

選擇適當的曲線型別來擬合觀測資料,並用擬合的曲線方程分析兩個變數間的關係

filename="data/unemployment-rate-1948-2010.csv"
ya=[]
xa=[]
try:
    with open(filename) as f:
        reader=csv.reader(f)
        for datarow in reader:
            if reader.line_num!=-1:
                ya.append(float(datarow[3]))
                # print(datarow[3])
                xa.append(int(datarow[1]))
except csv.Error:
    print("Erroe resding")
    sys.exit(-1)
plt.figure()
plt.scatter(xa[:],ya[:],s=10,c='g',marker='o',alpha=0.5)
ploy=np.polyfit(xa,ya,deg=3)
plt.plot(xa,np.polyval(ploy,xa))
plt.show()

離散型時間資料視覺化

散點圖

用位置作為視覺線索

直觀的表現出影響因數和預測物件之間的總體關係趨勢,

柱狀圖:

用高度或長度的差異來顯示指標數值的一種圖形。

柱形間距決定了柱狀圖的美觀程度

data=pd.read_csv("data/hot-dog-contest-winners.csv")
datax=data["Year"].values.tolist()
datay=data["Dogs eaten"].values.tolist()
# print(datay)
bar=(
    Bar()
    .add_xaxis(datax)
    .add_yaxis("",datay)
    .set_global_opts(title_opts=opts.TitleOpts("柱狀圖"))
    .render("result/zhu.html")
)

堆疊圖

若資料存在子分類,並且子分類相加有意義

data=pd.read_csv("data/hot-dog-places.csv")
data=data.T
datax=data.index.tolist()
y1=data[0].values.tolist()
y2=data[1].values.tolist()
y3=data[2].values.tolist()
#bar只支援list

bar=(
    Bar()
    .add_xaxis(datax)
    .add_yaxis("A",y1,stack=True)
    .add_yaxis("B",y2,stack=True)
    .add_yaxis("C",y3,stack=True)
    .set_global_opts(title_opts=opts.TitleOpts("柱狀圖"))
    .render("result/zhudui.html")
)