oafuncs 0.0.75__tar.gz → 0.0.77__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- oafuncs-0.0.77/MANIFEST.in +1 -0
- {oafuncs-0.0.75/oafuncs.egg-info → oafuncs-0.0.77}/PKG-INFO +9 -6
- {oafuncs-0.0.75 → oafuncs-0.0.77}/README.md +8 -2
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_cmap.py +73 -24
- oafuncs-0.0.77/oafuncs/oa_down/User_Agent-list.txt +9521 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_down/__init__.py +2 -3
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_down/test.py +24 -1
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_file.py +40 -4
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_nc.py +98 -36
- {oafuncs-0.0.75 → oafuncs-0.0.77/oafuncs.egg-info}/PKG-INFO +9 -6
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs.egg-info/SOURCES.txt +1 -1
- {oafuncs-0.0.75 → oafuncs-0.0.77}/setup.py +1 -4
- oafuncs-0.0.75/MANIFEST.in +0 -1
- oafuncs-0.0.75/oafuncs/oa_down/refs_pdf.py +0 -338
- {oafuncs-0.0.75 → oafuncs-0.0.77}/LICENSE.txt +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/__init__.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_data.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_down/hycom_3hourly.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_down/literature.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_draw.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_help.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_python.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_sign/__init__.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_sign/meteorological.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_sign/ocean.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_sign/scientific.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_tool/__init__.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs/oa_tool/email.py +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs.egg-info/dependency_links.txt +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs.egg-info/requires.txt +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/oafuncs.egg-info/top_level.txt +0 -0
- {oafuncs-0.0.75 → oafuncs-0.0.77}/setup.cfg +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
include oafuncs/oa_down/User_Agent-list.txt
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: oafuncs
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.77
|
4
4
|
Summary: My short description for my project.
|
5
5
|
Home-page: https://github.com/Industry-Pays/OAFuncs
|
6
6
|
Author: Kun Liu
|
@@ -9,9 +9,6 @@ License: MIT
|
|
9
9
|
Classifier: License :: OSI Approved :: MIT License
|
10
10
|
Classifier: Programming Language :: Python
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
12
|
-
Classifier: Programming Language :: Python :: 3.6
|
13
|
-
Classifier: Programming Language :: Python :: 3.7
|
14
|
-
Classifier: Programming Language :: Python :: 3.8
|
15
12
|
Classifier: Programming Language :: Python :: 3.9
|
16
13
|
Classifier: Programming Language :: Python :: 3.10
|
17
14
|
Classifier: Programming Language :: Python :: 3.11
|
@@ -267,6 +264,12 @@ oafuncs.oa_nc.write2nc(r'I:\test.nc', data,
|
|
267
264
|
|
268
265
|
- oa_file
|
269
266
|
|
267
|
+
- find_file
|
268
|
+
|
269
|
+
2024/12/02更新
|
270
|
+
|
271
|
+
查找满足条件的所有文件
|
272
|
+
|
270
273
|
- link_file
|
271
274
|
|
272
275
|
2024/10/28更新
|
@@ -279,9 +282,9 @@ oafuncs.oa_nc.write2nc(r'I:\test.nc', data,
|
|
279
282
|
|
280
283
|
复制文件
|
281
284
|
|
282
|
-
-
|
285
|
+
- rename_file
|
283
286
|
|
284
|
-
2024/
|
287
|
+
2024/12/02更新
|
285
288
|
|
286
289
|
按一定规则重命名文件(可多个)
|
287
290
|
|
@@ -230,6 +230,12 @@ oafuncs.oa_nc.write2nc(r'I:\test.nc', data,
|
|
230
230
|
|
231
231
|
- oa_file
|
232
232
|
|
233
|
+
- find_file
|
234
|
+
|
235
|
+
2024/12/02更新
|
236
|
+
|
237
|
+
查找满足条件的所有文件
|
238
|
+
|
233
239
|
- link_file
|
234
240
|
|
235
241
|
2024/10/28更新
|
@@ -242,9 +248,9 @@ oafuncs.oa_nc.write2nc(r'I:\test.nc', data,
|
|
242
248
|
|
243
249
|
复制文件
|
244
250
|
|
245
|
-
-
|
251
|
+
- rename_file
|
246
252
|
|
247
|
-
2024/
|
253
|
+
2024/12/02更新
|
248
254
|
|
249
255
|
按一定规则重命名文件(可多个)
|
250
256
|
|
@@ -1,24 +1,23 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# coding=utf-8
|
3
|
-
|
3
|
+
"""
|
4
4
|
Author: Liu Kun && 16031215@qq.com
|
5
5
|
Date: 2024-09-17 16:55:11
|
6
6
|
LastEditors: Liu Kun && 16031215@qq.com
|
7
7
|
LastEditTime: 2024-11-21 13:14:24
|
8
8
|
FilePath: \\Python\\My_Funcs\\OAFuncs\\oafuncs\\oa_cmap.py
|
9
|
-
Description:
|
9
|
+
Description:
|
10
10
|
EditPlatform: vscode
|
11
11
|
ComputerInfo: XPS 15 9510
|
12
12
|
SystemInfo: Windows 11
|
13
13
|
Python Version: 3.11
|
14
|
-
|
15
|
-
|
14
|
+
"""
|
16
15
|
|
17
16
|
import matplotlib as mpl
|
18
17
|
import matplotlib.pyplot as plt
|
19
18
|
import numpy as np
|
20
19
|
|
21
|
-
__all__ = [
|
20
|
+
__all__ = ["show", "extract_colors", "create_custom", "create_diverging", "create_5rgb_txt", "my_cmap"]
|
22
21
|
|
23
22
|
# ** 将cmap用填色图可视化(官网摘抄函数)
|
24
23
|
|
@@ -42,20 +41,20 @@ def show(colormaps: list):
|
|
42
41
|
|
43
42
|
# ** 将cmap转为list,即多个颜色的列表
|
44
43
|
def extract_colors(cmap, n=256):
|
45
|
-
|
44
|
+
"""
|
46
45
|
cmap : cmap名称
|
47
46
|
n : 提取颜色数量
|
48
47
|
return : 提取的颜色列表
|
49
48
|
example : out_cmap = extract_colors('viridis', 256)
|
50
|
-
|
49
|
+
"""
|
51
50
|
c_map = mpl.colormaps.get_cmap(cmap)
|
52
51
|
out_cmap = [c_map(i) for i in np.linspace(0, 1, n)]
|
53
52
|
return out_cmap
|
54
53
|
|
55
54
|
|
56
55
|
# ** 自制cmap,多色,可带位置
|
57
|
-
def create_custom(colors: list, nodes=None): # 利用颜色快速配色
|
58
|
-
|
56
|
+
def create_custom(colors: list, nodes=None, under=None, over=None): # 利用颜色快速配色
|
57
|
+
"""
|
59
58
|
func : 自制cmap,自动确定颜色位置(等比例)
|
60
59
|
description : colors可以是颜色名称,也可以是十六进制颜色代码
|
61
60
|
param {*} colors 颜色
|
@@ -63,62 +62,112 @@ def create_custom(colors: list, nodes=None): # 利用颜色快速配色
|
|
63
62
|
return {*} c_map
|
64
63
|
example : c_map = mk_cmap(['#C2B7F3','#B3BBF2','#B0CBF1','#ACDCF0','#A8EEED'])
|
65
64
|
c_map = mk_cmap(['aliceblue','skyblue','deepskyblue'],[0.0,0.5,1.0])
|
66
|
-
|
65
|
+
"""
|
67
66
|
if nodes is None: # 采取自动分配比例
|
68
|
-
cmap_color = mpl.colors.LinearSegmentedColormap.from_list(
|
67
|
+
cmap_color = mpl.colors.LinearSegmentedColormap.from_list("mycmap", colors)
|
69
68
|
else: # 按照提供比例分配
|
70
69
|
cmap_color = mpl.colors.LinearSegmentedColormap.from_list("mycmap", list(zip(nodes, colors)))
|
70
|
+
if under is not None:
|
71
|
+
cmap_color.set_under(under)
|
72
|
+
if over is not None:
|
73
|
+
cmap_color.set_over(over)
|
71
74
|
return cmap_color
|
72
75
|
|
76
|
+
|
73
77
|
# ** 自制diverging型cmap,默认中间为白色
|
74
78
|
|
75
79
|
|
76
80
|
def create_diverging(colors: list):
|
77
|
-
|
81
|
+
"""
|
78
82
|
func : 自制cmap,双色,中间默认为白色;如果输入偶数个颜色,则中间为白,如果奇数个颜色,则中间色为中间色
|
79
83
|
description : colors可以是颜色名称,也可以是十六进制颜色代码
|
80
84
|
param {*} colors
|
81
85
|
return {*}
|
82
86
|
example : diverging_cmap = mk_cmap_diverging(["#00c0ff", "#a1d3ff", "#DCDCDC", "#FFD39B", "#FF8247"])
|
83
|
-
|
87
|
+
"""
|
84
88
|
# 自定义颜色位置
|
85
89
|
n = len(colors)
|
86
90
|
nodes = np.linspace(0.0, 1.0, n + 1 if n % 2 == 0 else n)
|
87
91
|
newcolors = colors
|
88
92
|
if n % 2 == 0:
|
89
|
-
newcolors.insert(int(n / 2),
|
93
|
+
newcolors.insert(int(n / 2), "#ffffff") # 偶数个颜色,中间为白色
|
90
94
|
cmap_color = mpl.colors.LinearSegmentedColormap.from_list("mycmap", list(zip(nodes, newcolors)))
|
91
95
|
return cmap_color
|
92
96
|
|
97
|
+
|
93
98
|
# ** 根据RGB的txt文档制作色卡(利用Grads调色盘)
|
94
99
|
|
95
100
|
|
96
101
|
def create_5rgb_txt(rgb_txt_filepath: str): # 根据RGB的txt文档制作色卡/根据rgb值制作
|
97
|
-
|
102
|
+
"""
|
98
103
|
func : 根据RGB的txt文档制作色卡
|
99
104
|
description : rgb_txt_filepath='E:/python/colorbar/test.txt'
|
100
105
|
param {*} rgb_txt_filepath txt文件路径
|
101
106
|
return {*} camp
|
102
107
|
example : cmap_color=dcmap(path)
|
103
|
-
|
108
|
+
"""
|
104
109
|
with open(rgb_txt_filepath) as fid:
|
105
110
|
data = fid.readlines()
|
106
111
|
n = len(data)
|
107
112
|
rgb = np.zeros((n, 3))
|
108
113
|
for i in np.arange(n):
|
109
|
-
rgb[i][0] = data[i].split(
|
110
|
-
rgb[i][1] = data[i].split(
|
111
|
-
rgb[i][2] = data[i].split(
|
114
|
+
rgb[i][0] = data[i].split(",")[0]
|
115
|
+
rgb[i][1] = data[i].split(",")[1]
|
116
|
+
rgb[i][2] = data[i].split(",")[2]
|
112
117
|
max_rgb = np.max(rgb)
|
113
118
|
if max_rgb > 2: # 如果rgb值大于2,则认为是0-255的值,需要归一化
|
114
119
|
rgb = rgb / 255.0
|
115
|
-
icmap = mpl.colors.ListedColormap(rgb, name=
|
120
|
+
icmap = mpl.colors.ListedColormap(rgb, name="my_color")
|
116
121
|
return icmap
|
117
122
|
|
118
123
|
|
119
|
-
|
124
|
+
def my_cmap(cmap_name=None, query=False):
|
125
|
+
"""
|
126
|
+
description: Choosing a colormap from the list of available colormaps or a custom colormap
|
127
|
+
param {*} cmap_name:
|
128
|
+
param {*} query:
|
129
|
+
return {*}
|
130
|
+
"""
|
131
|
+
|
132
|
+
my_cmap_dict = {
|
133
|
+
"diverging_1": create_custom(["#4e00b3", "#0000FF", "#00c0ff", "#a1d3ff", "#DCDCDC", "#FFD39B", "#FF8247", "#FF0000", "#FF5F9E"]),
|
134
|
+
"cold_1": create_custom(["#4e00b3", "#0000FF", "#00c0ff", "#a1d3ff", "#DCDCDC"]),
|
135
|
+
"warm_1": create_custom(["#DCDCDC", "#FFD39B", "#FF8247", "#FF0000", "#FF5F9E"]),
|
136
|
+
# "land_1": create_custom(["#3E6436", "#678A59", "#91A176", "#B8A87D", "#D9CBB2"], under="#A6CEE3", over="#FFFFFF"), # 陆地颜色从深绿到浅棕,表示从植被到沙地的递减
|
137
|
+
# "ocean_1": create_custom(["#126697", "#2D88B3", "#4EA1C9", "#78B9D8", "#A6CEE3"], under="#8470FF", over="#3E6436"), # 海洋颜色从深蓝到浅蓝,表示从深海到浅海的递减
|
138
|
+
# "ocean_land_1": create_custom(
|
139
|
+
# [
|
140
|
+
# "#126697", # 深蓝(深海)
|
141
|
+
# "#2D88B3", # 蓝
|
142
|
+
# "#4EA1C9", # 蓝绿
|
143
|
+
# "#78B9D8", # 浅蓝(浅海)
|
144
|
+
# "#A6CEE3", # 浅蓝(近岸)
|
145
|
+
# "#AAAAAA", # 灰色(0值,海平面)
|
146
|
+
# "#D9CBB2", # 沙质土壤色(陆地开始)
|
147
|
+
# "#B8A87D", # 浅棕
|
148
|
+
# "#91A176", # 浅绿
|
149
|
+
# "#678A59", # 中绿
|
150
|
+
# "#3E6436", # 深绿(高山)
|
151
|
+
# ]
|
152
|
+
# ),
|
153
|
+
"colorful_1": create_custom(["#6d00db", "#9800cb", "#F2003C", "#ff4500", "#ff7f00", "#FE28A2", "#FFC0CB", "#DDA0DD", "#40E0D0", "#1a66f2", "#00f7fb", "#8fff88", "#E3FF00"]),
|
154
|
+
}
|
155
|
+
if query:
|
156
|
+
for key, _ in my_cmap_dict.items():
|
157
|
+
print(key)
|
158
|
+
|
159
|
+
if cmap_name in my_cmap_dict:
|
160
|
+
return my_cmap_dict[cmap_name]
|
161
|
+
else:
|
162
|
+
try:
|
163
|
+
return mpl.cm.get_cmap(cmap_name)
|
164
|
+
except ValueError:
|
165
|
+
raise ValueError(f"Unknown cmap name: {cmap_name}")
|
166
|
+
|
167
|
+
|
168
|
+
if __name__ == "__main__":
|
120
169
|
# ** 测试自制cmap
|
121
|
-
colors = [
|
170
|
+
colors = ["#C2B7F3", "#B3BBF2", "#B0CBF1", "#ACDCF0", "#A8EEED"]
|
122
171
|
nodes = [0.0, 0.2, 0.4, 0.6, 1.0]
|
123
172
|
c_map = create_custom(colors, nodes)
|
124
173
|
show([c_map])
|
@@ -128,8 +177,8 @@ if __name__ == '__main__':
|
|
128
177
|
show([diverging_cmap])
|
129
178
|
|
130
179
|
# ** 测试根据RGB的txt文档制作色卡
|
131
|
-
file_path =
|
180
|
+
file_path = "E:/python/colorbar/test.txt"
|
132
181
|
cmap_color = create_5rgb_txt(file_path)
|
133
182
|
|
134
183
|
# ** 测试将cmap转为list
|
135
|
-
out_cmap = extract_colors(
|
184
|
+
out_cmap = extract_colors("viridis", 256)
|