我是靠谱客的博主 真实小伙,最近开发中收集的这篇文章主要介绍运用plotly画图的一个小项目,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

绘图要求

在这里插入图片描述

准备工作

import numpy as np
import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots #绘多幅图片

第一题

data = pd.read_csv('weatherdata2020-05-14.csv',header=None)
data.head()

在这里插入图片描述
这段代码里包含了双y轴的操作

data_shanghai = data[(data[3]=='上海')&(data[2]=='闵行')]
layout = go.Layout(width=1000,height=500,yaxis1 = dict(title = '$温度(^oC)$'),yaxis2=dict(title = '湿度(%)',anchor='x', overlaying='y', side='right'),
                   xaxis = dict(title = '时间'))
data1 = go.Scatter(x=data_shanghai[1],y=data_shanghai[4],mode = 'lines+markers',name = '温度')
data2 = go.Scatter(x=data_shanghai[1],y=data_shanghai[5],mode = 'lines+markers',yaxis='y2',name = '湿度')
data = [data1,data2]
fig = go.Figure(data = data,layout=layout)
fig.show()

在这里插入图片描述

第二题

plotly多幅绘图操作

fig = make_subplots(rows=2,  # 将画布分为两行
                    cols=2,  # 将画布分为两列
                    subplot_titles=["5月14日温度", 
                                    "5月15日温度", 
                                    "5月16日温度", 
                                    "5月17日温度"],  # 子图的标题
                    x_title="时间",
                    y_title="$温度(^oC)$"
                   )
for i in range(14,18):
    data = pd.read_csv('weatherdata2020-05-%d.csv'%i,header=None)
    temp = data[(data[3]=='上海')&(data[2]=='闵行')]
    trace = go.Scatter(x=temp[1], y=temp[4],mode = 'lines+markers',name = '5月%d日温度'%i)
    if i <=15:
        fig.append_trace(trace, 1, i-13)
    else:
        fig.append_trace(trace, 2, i-15)
#设置图片大小
fig.layout.width = 1500
fig.layout.height = 800
fig.show()

在这里插入图片描述

第三题

wendu = []
shidu = []
riqi = []
for i in range(14,29):
    data = pd.read_csv('weatherdata2020-05-%d.csv'%(i),header = None)
    data_shanghai = data[(data[3] == '福建') & (data[2] == '漳州')]
    wendu.append(round(np.mean(data_shanghai[4]),2))
    shidu.append(round(np.mean(data_shanghai[5].str.strip("%").astype(float)),2))
    riqi.append('2020-05-%d'%i)
layout = go.Layout(yaxis1 = dict(title = '$平均温度(^oC)$'),yaxis2=dict(title = '平均湿度(%)',anchor='x', overlaying='y', side='right'),
                   xaxis = dict(title = '时间'))
data1 = go.Scatter(x=riqi,y=wendu,mode = 'lines+markers',name = '温度')
data2 = go.Scatter(x=riqi,y=shidu,mode = 'lines+markers',yaxis='y2',name = '湿度')
data = [data1,data2]
fig = go.Figure(data = data,layout=layout)
fig.show()

在这里插入图片描述
绘制柱状图

layout = go.Layout(title = '不同日期的平均温度和湿度',
    yaxis1 = dict(title = '$平均温度(^oC)$'),yaxis2=dict(title = '平均湿度(%)',anchor='x', overlaying='y', side='right'),
                   xaxis = dict(title = '日期',tickmode = 'array',tickvals = np.arange(1,16),ticktext=riqi),
                   legend=dict(x=0.5,y=1.2)) ##自己DIY X轴刻度标签
data1 = go.Bar(x=np.arange(1,16),y=wendu,name = '温度',width=0.4)
data2 = go.Bar(x=np.arange(1,16)+0.4,y=shidu,yaxis='y2',name = '湿度',width=0.4)
data = [data1,data2]
fig = go.Figure(data = data,layout=layout)
fig.show()

在这里插入图片描述

第四题

district = ['徐汇','长宁','崇明','奉贤','松江']
wendu =  []
shidu = []
data = pd.read_csv('weatherdata2020-05-14.csv',header=None)
for i in district:
    temp = data[(data[3]=='上海')&(data[2]==i)]
    wendu.append(round(np.mean(temp[4]),2))
    shidu.append(round(np.mean(temp[5].str.strip("%").astype(float)),2))
layout = go.Layout(title = '不同地区的平均温度和湿度',yaxis1 = dict(title = '$平均温度(^oC)$'),yaxis2=dict(title = '平均湿度(%)',anchor='x', overlaying='y', side='right'),
                   xaxis = dict(title = '地区',tickmode = 'array',tickvals = np.arange(1,6),ticktext=district),
                   legend=dict(x=0.5,y=1.2))
data1 = go.Bar(x=np.arange(1,6),y=wendu,name = '温度',width=0.4)
data2 = go.Bar(x=np.arange(1,6)+0.4,y=shidu,yaxis='y2',name = '湿度',width=0.4)
data = [data1,data2]
fig = go.Figure(data = data,layout=layout)
fig.show()

在这里插入图片描述

数据链接

数据链接:https://pan.baidu.com/s/1hR9CrzmKhRKyLvgI5c-4xg
提取码:87j6

最后

以上就是真实小伙为你收集整理的运用plotly画图的一个小项目的全部内容,希望文章能够帮你解决运用plotly画图的一个小项目所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部