朗肯动力循环

通过朗肯动力循环的实际示例演示Sankey类。

  1. import matplotlib.pyplot as plt
  2. from matplotlib.sankey import Sankey
  3. fig = plt.figure(figsize=(8, 9))
  4. ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[],
  5. title="Rankine Power Cycle: Example 8.6 from Moran and "
  6. "Shapiro\n\x22Fundamentals of Engineering Thermodynamics "
  7. "\x22, 6th ed., 2008")
  8. Hdot = [260.431, 35.078, 180.794, 221.115, 22.700,
  9. 142.361, 10.193, 10.210, 43.670, 44.312,
  10. 68.631, 10.758, 10.758, 0.017, 0.642,
  11. 232.121, 44.559, 100.613, 132.168] # MW
  12. sankey = Sankey(ax=ax, format='%.3G', unit=' MW', gap=0.5, scale=1.0/Hdot[0])
  13. sankey.add(patchlabel='\n\nPump 1', rotation=90, facecolor='#37c959',
  14. flows=[Hdot[13], Hdot[6], -Hdot[7]],
  15. labels=['Shaft power', '', None],
  16. pathlengths=[0.4, 0.883, 0.25],
  17. orientations=[1, -1, 0])
  18. sankey.add(patchlabel='\n\nOpen\nheater', facecolor='#37c959',
  19. flows=[Hdot[11], Hdot[7], Hdot[4], -Hdot[8]],
  20. labels=[None, '', None, None],
  21. pathlengths=[0.25, 0.25, 1.93, 0.25],
  22. orientations=[1, 0, -1, 0], prior=0, connect=(2, 1))
  23. sankey.add(patchlabel='\n\nPump 2', facecolor='#37c959',
  24. flows=[Hdot[14], Hdot[8], -Hdot[9]],
  25. labels=['Shaft power', '', None],
  26. pathlengths=[0.4, 0.25, 0.25],
  27. orientations=[1, 0, 0], prior=1, connect=(3, 1))
  28. sankey.add(patchlabel='Closed\nheater', trunklength=2.914, fc='#37c959',
  29. flows=[Hdot[9], Hdot[1], -Hdot[11], -Hdot[10]],
  30. pathlengths=[0.25, 1.543, 0.25, 0.25],
  31. labels=['', '', None, None],
  32. orientations=[0, -1, 1, -1], prior=2, connect=(2, 0))
  33. sankey.add(patchlabel='Trap', facecolor='#37c959', trunklength=5.102,
  34. flows=[Hdot[11], -Hdot[12]],
  35. labels=['\n', None],
  36. pathlengths=[1.0, 1.01],
  37. orientations=[1, 1], prior=3, connect=(2, 0))
  38. sankey.add(patchlabel='Steam\ngenerator', facecolor='#ff5555',
  39. flows=[Hdot[15], Hdot[10], Hdot[2], -Hdot[3], -Hdot[0]],
  40. labels=['Heat rate', '', '', None, None],
  41. pathlengths=0.25,
  42. orientations=[1, 0, -1, -1, -1], prior=3, connect=(3, 1))
  43. sankey.add(patchlabel='\n\n\nTurbine 1', facecolor='#37c959',
  44. flows=[Hdot[0], -Hdot[16], -Hdot[1], -Hdot[2]],
  45. labels=['', None, None, None],
  46. pathlengths=[0.25, 0.153, 1.543, 0.25],
  47. orientations=[0, 1, -1, -1], prior=5, connect=(4, 0))
  48. sankey.add(patchlabel='\n\n\nReheat', facecolor='#37c959',
  49. flows=[Hdot[2], -Hdot[2]],
  50. labels=[None, None],
  51. pathlengths=[0.725, 0.25],
  52. orientations=[-1, 0], prior=6, connect=(3, 0))
  53. sankey.add(patchlabel='Turbine 2', trunklength=3.212, facecolor='#37c959',
  54. flows=[Hdot[3], Hdot[16], -Hdot[5], -Hdot[4], -Hdot[17]],
  55. labels=[None, 'Shaft power', None, '', 'Shaft power'],
  56. pathlengths=[0.751, 0.15, 0.25, 1.93, 0.25],
  57. orientations=[0, -1, 0, -1, 1], prior=6, connect=(1, 1))
  58. sankey.add(patchlabel='Condenser', facecolor='#58b1fa', trunklength=1.764,
  59. flows=[Hdot[5], -Hdot[18], -Hdot[6]],
  60. labels=['', 'Heat rate', None],
  61. pathlengths=[0.45, 0.25, 0.883],
  62. orientations=[-1, 1, 0], prior=8, connect=(2, 0))
  63. diagrams = sankey.finish()
  64. for diagram in diagrams:
  65. diagram.text.set_fontweight('bold')
  66. diagram.text.set_fontsize('10')
  67. for text in diagram.texts:
  68. text.set_fontsize('10')
  69. # Notice that the explicit connections are handled automatically, but the
  70. # implicit ones currently are not. The lengths of the paths and the trunks
  71. # must be adjusted manually, and that is a bit tricky.
  72. plt.show()

朗肯动力循环示例

参考

此示例中显示了以下函数,方法,类和模块的使用:

  1. import matplotlib
  2. matplotlib.sankey
  3. matplotlib.sankey.Sankey
  4. matplotlib.sankey.Sankey.add
  5. matplotlib.sankey.Sankey.finish

下载这个示例