testLargeComponetTemp.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import pandas as pd
  2. import numpy as np
  3. import plotly.graph_objects as go
  4. # 示例数据
  5. data = {
  6. 'power': np.random.uniform(0, 500, 1000), # 假设功率范围是 0 到 500 kW
  7. 'time': pd.date_range(start='2024-01-01', periods=240, freq='H'), # 假设时间范围是 1000 小时
  8. 'temperature': np.random.uniform(0, 100, 1000) # 假设温度范围是 0 到 100 °C
  9. }
  10. df = pd.DataFrame(data)
  11. # 功率分仓
  12. df['power_bin'] = (df['power'] // 25) * 25
  13. # 时间分仓(按天)
  14. df['date'] = df['time'].dt.date
  15. # 温度分仓
  16. df['temperature_bin'] = (df['temperature'] // 5) * 5
  17. # 计算每个分仓的出现次数
  18. heatmap_data = df.groupby(['power_bin', 'date', 'temperature_bin']).size().reset_index(name='count')
  19. # 创建3D热图
  20. fig = go.Figure(data=[
  21. go.Scatter3d(
  22. x=heatmap_data['power_bin'],
  23. y=heatmap_data['date'],
  24. z=heatmap_data['temperature_bin'],
  25. mode='markers',
  26. marker=dict(
  27. size=5,
  28. color=heatmap_data['count'],
  29. colorscale='Viridis',
  30. colorbar=dict(title='Count'),
  31. )
  32. )
  33. ])
  34. fig.update_layout(
  35. title='功率,时间和温度的3D热图',
  36. scene=dict(
  37. xaxis_title='功率 (kW)',
  38. yaxis_title='日期',
  39. zaxis_title='温度 (°C)'
  40. )
  41. )
  42. fig.show()