scatter3D_plotly_make_subplots.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import pandas as pd
  2. import plotly.graph_objects as go
  3. from plotly.subplots import make_subplots
  4. # 假设你的DataFrame叫做df,并且已经包含了所需字段
  5. # 如果你的数据是CSV文件,可以使用pd.read_csv('your_file.csv')来加载数据
  6. # df = pd.read_csv('your_file.csv')
  7. # 示例数据
  8. data = {
  9. '机组名': ['机组A', '机组B', '机组C', '机组D'],
  10. '时间': ['2024-01-09 09:13:29', '2024-01-10 10:14:30', '2024-02-09 08:13:29', '2024-02-10 09:14:30'],
  11. '年月': ['2024-01', '2024-01', '2024-02', '2024-02'],
  12. '风速': [5.0, 6.0, 4.5, 5.5],
  13. '有功功率': [1000, 1200, 900, 1100]
  14. }
  15. df = pd.DataFrame(data)
  16. # 创建颜色映射,将每个年月映射到一个唯一的颜色
  17. unique_months = df['年月'].unique()
  18. colors = [f'rgb({i}, {150 - i}, 50)' for i in range(len(unique_months))]
  19. color_map = dict(zip(unique_months, colors))
  20. # 使用make_subplots创建3D散点图
  21. fig = make_subplots(rows=1, cols=1, specs=[[{"type": "scatter3d"}]])
  22. # 遍历DataFrame的每一行,为每个点添加数据
  23. for index, row in df.iterrows():
  24. x = row['风速']
  25. y = row['年月']
  26. z = row['有功功率']
  27. color = color_map[y]
  28. # 添加散点到子图
  29. fig.add_trace(go.Scatter3d(x=[x], y=[y], z=[z], mode='markers', marker=dict(color=color)), row=1, col=1)
  30. # 更新子图的布局,设置y轴为category类型,并设置其类别顺序
  31. fig.update_layout(
  32. title='3D散点图:风速、年月与有功功率',
  33. margin=dict(l=0, r=0, b=0, t=0),
  34. scene=dict(
  35. xaxis=dict(title='风速'),
  36. yaxis=dict(title='年月', tickmode='array', tickvals=unique_months, ticktext=unique_months, categoryorder='category ascending'),
  37. zaxis=dict(title='有功功率')
  38. )
  39. )
  40. # 显示图形
  41. fig.show()