一文教你绘制多图---由低级到高级
01
前言
前面学习了一系列基础图形的绘制,但是有时我们需要将多个图放在一个画布上。干货奉上,一文教你绘制多图。
代码实现
import plotly as py
from plotly import tools
import pandas as pd
from plotly import graph_objs as gopyplt=py.offline.plotdef read_csv(): #读取csv文件中的天气数据df=pd.read_csv('tian.csv')df.loc[:, 'bWendu'] = df['bWendu'].str.replace("℃", '').astype('int32')df.loc[:, 'yWendu'] = df['yWendu'].str.replace("℃", '').astype('int32')df.loc[:, 'wencha'] = df['bWendu'] - df['yWendu']b_list=[i for i in df.loc[:,'bWendu']]y_list=[i for i in df.loc[:,'yWendu']]wc_list=[i for i in df.loc[:,'wencha']]aqi_list=[int(i) for i in df.loc[:,'aqi']]x=[i for i in range(1,32)]print(b_list,y_list,wc_list,aqi_list,x)return b_list,y_list,wc_list,aqi_list,xdef plot_way1(b_list,y_list,wc_list,aqi_list,x):#第一种绘制多图的数据trace1 = go.Scatter(x=x,y=b_list,name='每日最高温度')trace2 = go.Scatter(x=x,y=y_list,xaxis='x2',yaxis='y2',name='每日最低温度')trace3 = go.Scatter(x=x,y=wc_list,xaxis='x3',yaxis='y3',name='每日温差')trace4 = go.Scatter(x=x,y=aqi_list,xaxis='x4',yaxis='y4',name='每日空气质量指数')data = [trace1, trace2, trace3, trace4]layout = go.Layout(title='2018年1月份北京最高温度,最低温度,温差和空气质量变化情况',xaxis=dict(domain=[0, 0.45]),yaxis=dict(domain=[0, 0.45]),xaxis2=dict(domain=[0.55, 1]),xaxis3=dict(domain=[0, 0.45],anchor='y3'),xaxis4=dict(domain=[0.55, 1],anchor='y4'),yaxis2=dict(domain=[0, 0.45],anchor='x2'),yaxis3=dict(domain=[0.55, 1]),yaxis4=dict(domain=[0.55, 1],anchor='x4'))fig = go.Figure(data=data, layout=layout)pyplt(fig, filename='temp/多图应用方法一.html')def plot_way2(b_list,y_list,wc_list,aqi_list,x):#第二种绘制多图的方法trace1 = go.Scatter(x=x,y=b_list,name='每日最高温度')trace2 = go.Scatter(x=x,y=y_list,name='每日最低温度')trace3 = go.Scatter(x=x,y=wc_list,name='每日温差')trace4 = go.Scatter(x=x,y=aqi_list,name='每日空气质量指数')fig=tools.make_subplots(rows=2,cols=2)#两行一列fig.append_trace(trace1,1,1)fig.append_trace(trace2,1,2)fig.append_trace(trace3,2,1)fig.append_trace(trace4,2,2)fig['layout'].update(height=1000,width=1000,title='2018年1月份北京最高温度,最低温度,温差和空气质量变化情况')pyplt(fig,filename='temp/多图应用方法二.html')def plot_view(b_list,y_list,wc_list,x):#分割视图空间trace1 = go.Scatter(x=x,y=b_list,name='每日最高温度')trace2 = go.Scatter(x=x,y=y_list,name='每日最低温度')trace3 = go.Scatter(x=x,y=wc_list,name='每日温差')fig=tools.make_subplots(rows=2,cols=2,specs=[[{},{}],[{'colspan':2},None]])fig.append_trace(trace1, 1, 1)fig.append_trace(trace2, 1, 2)fig.append_trace(trace3, 2, 1)fig['layout'].update(height=600, width=1000, title='分割视图空间')pyplt(fig, filename='temp/多图应用视图空间.html')def plot_insert(b_list,wc_list,x):#嵌入式子图trace1 = go.Scatter(x=x,y=b_list,name='每日最高温度')trace2 = go.Scatter(x=x,y=wc_list,xaxis='x2',yaxis='y2',name='每日温差')data=[trace1,trace2]layout=go.Layout(xaxis2=dict(domain=[0.6,0.95],anchor='y2'),yaxis2=dict(domain=[0.6,0.95],anchor='x2'))fig=go.Figure(data=data,layout=layout)pyplt(fig,filename='temp/多图应用之嵌入式子图.html')if __name__ == '__main__':b_list,y_list,wc_list,aqi_list,x=read_csv()plot_way1(b_list, y_list, wc_list, aqi_list, x)plot_way2(b_list, y_list, wc_list, aqi_list, x)plot_view(b_list, y_list, wc_list, x)plot_insert(b_list, wc_list, x)
代码所用到的csv文件
ymd,bWendu,yWendu,tianqi,fengxiang,fengli,aqi,aqiInfo,aqiLevel
2018-01-01,3℃,-6℃,晴~多云,东北风,1-2级,59,良,2
2018-01-02,2℃,-5℃,阴~多云,东北风,1-2级,49,优,1
2018-01-03,2℃,-5℃,多云,北风,1-2级,28,优,1
2018-01-04,0℃,-8℃,阴,东北风,1-2级,28,优,1
2018-01-05,3℃,-6℃,多云~晴,西北风,1-2级,50,优,1
2018-01-06,2℃,-5℃,多云~阴,西南风,1-2级,32,优,1
2018-01-07,2℃,-4℃,阴~多云,西南风,1-2级,59,良,2
2018-01-08,2℃,-6℃,晴,西北风,4-5级,50,优,1
2018-01-09,1℃,-8℃,晴,西北风,3-4级,34,优,1
2018-01-10,-2℃,-10℃,晴,西北风,1-2级,26,优,1
2018-01-11,-1℃,-10℃,晴,北风,1-2级,24,优,1
2018-01-12,2℃,-8℃,晴,西南风,1-2级,75,良,2
2018-01-13,3℃,-7℃,多云,南风,1-2级,126,轻度污染,3
2018-01-14,6℃,-5℃,晴~多云,西北风,1-2级,187,中度污染,4
2018-01-15,2℃,-5℃,阴,东南风,1-2级,47,优,1
2018-01-16,4℃,-5℃,多云,南风,1-2级,112,轻度污染,3
2018-01-17,6℃,-7℃,多云~晴,西北风,1-2级,82,良,2
2018-01-18,5℃,-6℃,晴,西南风,1-2级,80,良,2
2018-01-19,7℃,-4℃,晴,南风,1-2级,115,轻度污染,3
2018-01-20,3℃,-6℃,晴~多云,东风,1-2级,64,良,2
2018-01-21,0℃,-5℃,阴~小雪,东北风,1-2级,63,良,2
2018-01-22,-3℃,-10℃,小雪~多云,东风,1-2级,47,优,1
2018-01-23,-4℃,-12℃,晴,西北风,3-4级,31,优,1
2018-01-24,-4℃,-11℃,晴,西南风,1-2级,34,优,1
2018-01-25,-3℃,-11℃,多云,东北风,1-2级,27,优,1
2018-01-26,-3℃,-10℃,晴~多云,南风,1-2级,39,优,1
2018-01-27,-1℃,-9℃,多云,南风,1-2级,105,轻度污染,3
2018-01-28,-1℃,-9℃,晴,西北风,3-4级,55,良,2
2018-01-29,1℃,-8℃,晴,西北风,1-2级,57,良,2
2018-01-30,4℃,-7℃,晴,西北风,1-2级,36,优,1
2018-01-31,3℃,-8℃,晴,西南风,1-2级,60,良,2
效果截图





本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
