Python運用webbrowser打開PyEcharts生成的html文件
話不多說,直接上代碼
這里 也有更多pyecharts的代碼~
示例
調用庫
import pandas as pd import time from functools import partial from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui, QtWidgets from pyecharts import options as opts from pyecharts.charts import Kline, Line, Bar, Grid import webbrowser as wb
1
2
3
4
5
6
7
8
K線圖、輸出在默認瀏覽器顯示
# 移動平均數計算 def moving_average(data, day_count): data = data.values[:, 0] result = [] for i in range(len(data)): start_day_index = i - day_count + 1 if start_day_index <= 0: start_day_index = 0 justified_day_count = i - start_day_index + 1 mean = data[start_day_index:i + 1].sum() / justified_day_count result.append(mean) return result # k線 --項目需求:已實現-- def show_kline(csv_name): # 讀取.csv文件, stock_code = 'Brent_OIL' stock_data = pd.read_csv(csv_name, encoding='gb2312') # 將文件內容按照by=[‘date’]內容進行排序 stock_data = stock_data.sort_values(by=["date"], ascending=[True], inplace=False) stock_data_cleared = stock_data[stock_data['close'] > 0] stock_name = stock_data_cleared["position"][0] stock_data_extracted = stock_data_cleared[["open", "close", "low", "high", "volume", "date"]] kline = ( Kline() .add_xaxis(stock_data_extracted["date"].values.tolist()) .add_yaxis("K線圖", stock_data_extracted.iloc[:, :4].values.tolist()) .set_global_opts( xaxis_opts=opts.AxisOpts(is_scale=True, is_show=False), # axis_opts=opts.AxisOpts(is_scale=True,min_=0), #y軸起始坐標可以設為0 yaxis_opts=opts.AxisOpts(is_scale=True), # y軸起始坐標可自動調整 #title_opts=opts.TitleOpts(title="價格", subtitle=stock_name + "\n" + stock_code, pos_top="20%"), axispointer_opts=opts.AxisPointerOpts( is_show=True, link=[{"xAxisIndex": "all"}], label=opts.LabelOpts(background_color="#777"), ), datazoom_opts=[ # 設置zoom參數后即可縮放 opts.DataZoomOpts( is_show=True, type_="inside", xaxis_index=[0, 1], # 設置第0軸和第1軸同時縮放 range_start=0, range_end=100, ), opts.DataZoomOpts( is_show=True, xaxis_index=[0, 1], type_="slider", pos_top="90%", range_start=0, range_end=100, ), ], ) ) # 移動平均線 line = ( Line() .add_xaxis(xaxis_data=stock_data_extracted["date"].values.tolist()) .add_yaxis( series_name="MA5", y_axis=moving_average(stock_data_extracted[["close"]], 5), is_smooth=True, is_hover_animation=False, linestyle_opts=opts.LineStyleOpts(width=1, opacity=0.5), label_opts=opts.LabelOpts(is_show=False), ) .add_yaxis( series_name="MA10", y_axis=moving_average(stock_data_extracted[["close"]], 10), is_smooth=True, is_hover_animation=False, linestyle_opts=opts.LineStyleOpts(width=1, opacity=0.5), label_opts=opts.LabelOpts(is_show=False), ) .add_yaxis( series_name="MA30", y_axis=moving_average(stock_data_extracted[["close"]], 30), is_smooth=True, is_hover_animation=False, linestyle_opts=opts.LineStyleOpts(width=1, opacity=0.5), label_opts=opts.LabelOpts(is_show=False), ) .add_yaxis( series_name="MA60", y_axis=moving_average(stock_data_extracted[["close"]], 60), is_smooth=True, is_hover_animation=False, linestyle_opts=opts.LineStyleOpts(width=1, opacity=0.5), label_opts=opts.LabelOpts(is_show=False), ) .add_yaxis( series_name="MA120", y_axis=moving_average(stock_data_extracted[["close"]], 120), is_smooth=True, is_hover_animation=False, linestyle_opts=opts.LineStyleOpts(width=1, opacity=0.5), label_opts=opts.LabelOpts(is_show=False), ) .add_yaxis( series_name="MA240", y_axis=moving_average(stock_data_extracted[["close"]], 240), is_smooth=True, is_hover_animation=False, linestyle_opts=opts.LineStyleOpts(width=1, opacity=0.5), label_opts=opts.LabelOpts(is_show=False), ) .add_yaxis( series_name="MA360", y_axis=moving_average(stock_data_extracted[["close"]], 360), is_smooth=True, is_hover_animation=False, linestyle_opts=opts.LineStyleOpts(width=1, opacity=0.5), label_opts=opts.LabelOpts(is_show=False), ) .set_global_opts(xaxis_opts=opts.AxisOpts(type_="category")) ) # 將K線圖和移動平均線顯示在一個圖內 kline.overlap(line) # 成交量柱形圖 x = stock_data_extracted[["date"]].values[:, 0].tolist() y = stock_data_extracted[["volume"]].values[:, 0].tolist() bar = ( Bar() .add_xaxis(x) .add_yaxis("成交量", y, label_opts=opts.LabelOpts(is_show=False), itemstyle_opts=opts.ItemStyleOpts(color="#008080")) .set_global_opts(title_opts=opts.TitleOpts(title="成交量", pos_top="70%"), legend_opts=opts.LegendOpts(is_show=False), ) ) # 使用網格將多張圖標組合到一起顯示 grid_chart = Grid() grid_chart.add( kline, grid_opts=opts.GridOpts(pos_left="15%", pos_right="8%", height="55%"), ) grid_chart.add( bar, grid_opts=opts.GridOpts(pos_left="15%", pos_right="8%", pos_top="70%", height="20%"), ) htl = csv_name + ".html" grid_chart.render(htl) wb.open(htl)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
主函數
def click_success(self): print("數據獲取成功!") csv_name1 = 'outside_brent_oil.csv' outside_history_brent_oil_data().to_csv(csv_name1, index=False) show_kline(csv_name1) # html_success() def click_success_3(self): print("數據獲取成功!") csv_name2 = 'outside_newyork_oil.csv' outside_history_newyork_oil_data().to_csv(csv_name2, index=False) show_kline(csv_name2) def click_success_4(self): print("數據獲取成功!") csv_name3 = 'outside_newyork_gas.csv' outside_history_newyork_natural_gas_data().to_csv(csv_name3, index=False) show_kline(csv_name3) if __name__ == '__main__': app = QApplication(sys.argv) MainWindow = QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() # 外盤期貨 ui.pushButton.clicked.connect(click_success) # 布倫特原油期貨分析圖 ui.pushButton_3.clicked.connect(click_success_3) # 紐約原油期貨分析圖 ui.pushButton_4.clicked.connect(click_success_4) # 紐約天然氣期貨分析圖 sys.exit(app.exec_())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
其中實現跳轉代碼為
htl = csv_name + ".html" grid_chart.render(htl) wb.open(htl)
1
2
3
4
"
所以不用老去糾結每件事
集中精力完成眼前的事情的過程中
愿望自然就會實現了吧。
"
【純·干貨】你會用到的論文小助手,不定期持續更新中~
HTML Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。