重装系统之前没有这个错误,重装之后报这个错,我重装python,重新下载库,但不解决问题,别的电脑就能运行,求高手解决!
TypeError: int() argument must be a string, a bytes-like object or a number, not '_NoValueType'
报错信息:
Traceback (most recent call last):
File "E:/Users/jjh/大坝图/dabatu11.py", line 1329, in <module>
test(ls)
File "E:/Users/jjh/大坝图/dabatu11.py", line 1268, in test
print('1268:',df1)
File "D:\Users\asus\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\frame.py", line 751, in __repr__
show_dimensions=show_dimensions,
File "D:\Users\asus\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\core\frame.py", line 883, in to_string
return formatter.to_string(buf=buf, encoding=encoding)
File "D:\Users\asus\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\formats\format.py", line 921, in to_string
return self.get_result(buf=buf, encoding=encoding)
File "D:\Users\asus\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\formats\format.py", line 520, in get_result
self.write_result(buf=f)
File "D:\Users\asus\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\formats\format.py", line 841, in write_result
text = self._join_multiline(*strcols)
File "D:\Users\asus\AppData\Local\Programs\Python\Python37\lib\site-packages\pandas\io\formats\format.py", line 883, in _join_multiline
lwidth -= np.array([self.adj.len(x) for x in idx]).max() + adjoin_width
File "D:\Users\asus\AppData\Local\Programs\Python\Python37\lib\site-packages\numpy\core\_methods.py", line 39, in _amax
return umr_maximum(a, axis, None, out, keepdims, initial, where)
TypeError: int() argument must be a string, a bytes-like object or a number, not '_NoValueType'
Process finished with exit code 1
arr = [[
"坝横",
"坝纵",
"高程",
"type",
"编号"
], [
-5,
21,
1151,
0,
"J11"
], [
-2.5,
21,
1141.75,
0,
"J12"
], [
-2.5,
41,
1151,
0,
"J13"
], [
-2.5,
41,
1134,
0,
"J14"
], [
-0.5,
61,
1151,
0,
"J15"
], [
-2.5,
61,
1125.1,
0,
"J16"
], [
-0.5,
76,
1151,
0,
"J17"
], [
-2.5,
76,
1124,
0,
"J18"
], [
-0.5,
92,
1151,
0,
"J19"
], [
-2.5,
92,
1122.25,
0,
"J20"
], [
-0.5,
102,
1151,
0,
"J21"
], [
-2.5,
102,
1124,
0,
"J22"
], [
-5.5,
119,
1151,
0,
"J23"
], [
1.5,
119,
1130.5,
0,
"J24"
], [
1.5,
136,
1151,
0,
"J25"
], [
-2.5,
136,
1130.5,
0,
"J26"
], [
1.5,
153,
1151,
0,
"J27"
], [
2.5,
153,
1130.5,
0,
"J28"
], [
-0.5,
167,
1151,
0,
"J29"
], [
-2.5,
167,
1138.75,
0,
"J30"
], [
-3,
28,
1128.13,
0,
"J31"
], [
-3,
35,
1120.48,
0,
"J32"
], [
-3,
49,
1111.2,
0,
"J33"
], [
-3,
56,
1102.8,
0,
"J34"
], [
-3,
85,
1093.5,
0,
"J35"
], [
-3,
113,
1106.75,
0,
"J36"
], [
-3,
157,
1112.5,
0,
"J37"
], [
-3,
162,
1112.5,
0,
"J38"
], [
-3,
173,
1132.5,
0,
"J39"
], [
-3,
179,
1144.5,
0,
"J40"
], [
2.1,
31,
1124.05,
5,
"测压管P1"
], [
2.1,
51,
1108,
5,
"测压管P2"
], [
2.1,
66,
1098.4,
5,
"测压管P3"
], [
2.1,
89.5,
1092.7,
5,
"测压管P4"
], [
2.1,
101,
1096.2,
5,
"测压管P5"
], [
2.1,
108,
1100.53,
5,
"测压管P6"
], [
2.1,
127.5,
1109.2,
5,
"测压管P7"
], [
2.1,
144.5,
1109.2,
5,
"测压管P8"
], [
-2,
84.25,
1088.5,
1,
"M1"
], [
5.5,
84.25,
1092,
1,
"M2"
], [
25,
84.25,
1092,
1,
"M3"
], [
45,
84.25,
1088.5,
1,
"M4"
], [
-2,
60,
1094.2,
1,
"M5"
], [
7,
60,
1094.2,
1,
"M6"
], [
31,
60,
1094.2,
1,
"M7"
], [
-1.5,
84.25,
1131,
2,
"J1"
], [
-1.5,
84.25,
1122,
2,
"J2"
], [
-1.5,
84.25,
1113,
2,
"J3"
], [
3.5,
84.25,
1103,
2,
"J4"
], [
27.52,
84.25,
1106,
2,
"J5"
], [
-1.5,
60,
1138,
2,
"J6"
], [
-1.5,
60,
1127,
2,
"J7"
], [
-1.5,
60,
1116,
2,
"J8"
], [
3.5,
60,
1107,
2,
"J9"
], [
24.25,
60,
1111,
2,
"J10"
], [
-2.5,
84.25,
1120,
3,
"E1"
], [
-2.5,
84.25,
1120,
3,
"E1"
], [
-2.5,
84.25,
1120,
3,
"E2"
], [
8,
84.25,
1096.3,
3,
"E3"
], [
28,
84.25,
1096.3,
3,
"E4"
], [
-2.5,
60,
1122,
3,
"E5"
], [
-1.5,
60,
1122,
3,
"E6"
], [
9,
60,
1098.5,
3,
"E7"
], [
28,
60,
1098.5,
3,
"E8"
], [
-3,
84.25,
1128,
4,
"T1"
], [
-3,
84.25,
1128,
4,
"T2"
], [
10,
84.25,
1128,
4,
"T3"
], [
-3.89,
84.25,
1120,
4,
"T4"
], [
7,
84.25,
1120,
4,
"T5"
], [
18,
84.25,
1120,
4,
"T6"
], [
-5.24,
84.25,
1111,
4,
"T7"
], [
7,
84.25,
1111,
4,
"T8"
], [
17,
84.25,
1111,
4,
"T9"
], [
25,
84.25,
1111,
4,
"T10"
], [
-6.59,
84.25,
1102,
4,
"T11"
], [
7,
84.25,
1102,
4,
"T12"
], [
17,
84.25,
1102,
4,
"T13"
], [
27,
84.25,
1102,
4,
"T14"
], [
37,
84.25,
1102,
4,
"T15"
], [
-2.92,
60,
1140,
4,
"T16"
], [
-2.92,
60,
1128,
4,
"T17"
], [
11,
60,
1128,
4,
"T18"
], [
-4.49,
60,
1116,
4,
"T19"
], [
8,
60,
1116,
4,
"T20"
], [
20,
60,
1116,
4,
"T21"
], [
-6.29,
60,
1104,
4,
"T22"
], [
7,
60,
1104,
4,
"T23"
], [
7,
60,
1104,
4,
"T23"
], [
18,
60,
1104,
4,
"T24"
], [
29,
60,
1104,
4,
"T25"
], [
-3,
84.25,
1102.2,
6,
"N1"
], [
10,
84.25,
1102.2,
6,
"N2"
], [
20,
84.25,
1102.2,
6,
"N3"
], [
30,
84.25,
1102.2,
6,
"N4"
], [
-3,
60,
1105.2,
6,
"N5"
], [
8,
60,
1105.2,
6,
"N6"
], [
17,
60,
1105.2,
6,
"N7"
], [
27,
60,
1105.2,
6,
"N8"
], [
-3,
84.25,
1102.2,
7,
"S1-1"
], [
-3,
84.25,
1102.2,
7,
"S1-2"
], [
-3,
84.25,
1102.2,
7,
"S1-3"
], [
-3,
84.25,
1102.2,
7,
"S1-4"
], [
10,
84.25,
1102.2,
7,
"S2-1"
], [
10,
84.25,
1102.2,
7,
"S2-2"
], [
10,
84.25,
1102.2,
7,
"S2-3"
], [
10,
84.25,
1102.2,
7,
"S2-4"
], [
20,
84.25,
1102.2,
7,
"S3-1"
], [
20,
84.25,
1102.2,
7,
"S3-2"
], [
20,
84.25,
1102.2,
7,
"S3-3"
], [
20,
84.25,
1102.2,
7,
"S3-4"
], [
30,
84.25,
1102.2,
7,
"S4-1"
], [
30,
84.25,
1102.2,
7,
"S4-2"
], [
30,
84.25,
1102.2,
7,
"S4-3"
], [
30,
84.25,
1102.2,
7,
"S4-4"
], [
-3,
60,
1105.2,
7,
"S5-1"
], [
-3,
60,
1105.2,
7,
"S5-2"
], [
-3,
60,
1105.2,
7,
"S5-3"
], [
-3,
60,
1105.2,
7,
"S5-4"
], [
8,
60,
1105.2,
7,
"S6-1"
], [
8,
60,
1105.2,
7,
"S6-2"
], [
8,
60,
1105.2,
7,
"S6-3"
], [
8,
60,
1105.2,
7,
"S6-4"
], [
17,
60,
1105.2,
7,
"S7-1"
], [
17,
60,
1105.2,
7,
"S7-2"
], [
17,
60,
1105.2,
7,
"S7-3"
], [
17,
60,
1105.2,
7,
"S7-4"
], [
27,
60,
1105.2,
7,
"S8-1"
], [
27,
60,
1105.2,
7,
"S8-2"
], [
27,
60,
1105.2,
7,
"S8-3"
], [
27,
60,
1105.2,
7,
"S8-4"
]
]
# with open("./test.json", 'r') as load_f:
# load_dict = eval(load_f.read())
# print(load_dict)
# data = load_dict
# print(795,data)
arr1 = arr[1:]
import pandas as pd
import numpy as np
x_mean = np.mean([item[0] for item in arr1])
y_mean = np.mean([item[1] for item in arr1])
z_mean = np.mean([item[2] for item in arr1])
pd.set_option('display.max_rows', 60000)
pd.set_option('display.max_columns', 1000)
# pos_ls = [(pos[0], pos[1], pos[2]) for index, pos in arr[1:]]
def touying(a, b, c, d, x0, y0, z0):
pingfanghe = a ** 2 + b ** 2 + c ** 2
xp = ((b ** 2 + c ** 2) * x0 - a * (b * y0 + c * z0 + d)) / pingfanghe
yp = ((a ** 2 + c ** 2) * y0 - b * (a * x0 + c * z0 + d)) / pingfanghe
zp = ((a ** 2 + b ** 2) * z0 - c * (a * x0 + b * y0 + d)) / pingfanghe
return xp, yp, zp
# print('touying:', touying(0, 0, 1, -1, 1, 1, 3.8))
# 投影到的平面
a1 = 0.001
b1 = 1
c1 = 0.001
d1 = 0
# a1 = data[0] - x_mean
# b1 = data[1] - y_mean
# c1=data[2]-z_mean
# a1x+b1y+c1z+d1=0
# 原点
x1 = 0.01
y1 = 0.01
if c1 == 0:
c1 = 0.01
z1 = -(a1 * x1 + b1 * y1 + d1) / c1
print(837,z1)
# -1
# x轴上一点
x2 = 1
y2 = 0.01
z2 = -(a1 * x2 + b1 * y2 + d1) / c1
# -3
# print(z2)
# (x-x1)/(x2-x1)=(y-y1)/(y2-y1)=(z-z1)/(z2-z1)
# (x-x1)(x2-x1)+(y-y1)(y2-y1)+(z-z1)(z2-z1)=0
# x轴:(x-x1)/a2=(y-y1)/b2=(z-z1)/c2
a2 = x2 - x1
b2 = y2 - y1
c2 = z2 - z1
# print(a2,b2,c2)
# 1,1,-2
# y轴直线上一点
x0 = 0.01
# z0 = (x1 * x2 - x1 ** 2 - (y1 - y2) * d1 / b1 - y1 ** 2
# - y1 * y2 + z1 * z2 - z1 ** 2) / z2 - z1 + (y1 - y2) * c1 / b1
# y0 = -(c1 * z1 + d1) / b1
# y轴方向
from sympy import Symbol, solve
# 定义变量
y = Symbol('y')
z = Symbol('z')
res = solve([a2 * (x1 - x0) + b2 * (y1 - y) + c2 * (z1 - z), a1 * x0 + b1 * y + c1 * z + d1], [y, z])
print(res, type(res))
y0 = res[y]
z0 = res[z]
del z, y
print(869,y0, z0)
a3 = x0 - x1
# a3 = b1 * c2 - b2 * c1
# b3 = a2 * c1 - a1 * c2
# c3 = a1 * b2 - a2 * b1
b3 = y0 - y1
c3 = z0 - z1
# y轴:(x-x0)/a3=(y-y0)/b3=(z-z0)/c3
# xzh = ((x1, y1, z1), (a2, b2, c2))
# yzh = ((x0, y0, z0), (a3, b3, c3))
xzh = ((0, 0, 0), (1, 0, 0))
yzh = ((0, 0, 0), (0, 0, 1))
print(xzh)
print(yzh)
def juli_pointtoline(x1, y1, z1, zh):
(x2, y2, z2), (a, b, c) = zh
x = Symbol('x')
y = Symbol('y')
z = Symbol('z')
res = {}
if a == 0:
a = 0.00001
if b == 0:
b = 0.00001
if c == 0:
c = 0.00001
res = solve([a * (x - x1) + b * (y -
y1) + c * (z - z1), (x - x2) / a - (y - y2) / b,
(x - x2) / a - (z - z2) / c], [x, y, z])
x_j = res[x]
y_j = res[y]
z_j = res[z]
# x = (a * x1 + (b ** 2 + c ** 2) / a * x2 + b * y1
# - b * y2 + c * z1 - c * z2) / (a + (b ** 2 + c ** 2) / a)
# y = (b * (x1 - x2)) / a + y2
# z = (c * (x1 - x2)) / a + z2
juli = round(((x_j - x1) ** 2 + (y_j - y1) **
2 + (z_j - z1) ** 2) ** 0.5, 3)
return float(juli)
# print('juli_pointtoline', juli_pointtoline(0, 0, 0, ((1, 0, 0), (1, 0, 0))))
def IsTrangleOrArea(x1, y1, x2, y2, x3, y3):
return round(abs((x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)) / 2.0), 3)
def IsInside(x1, y1, x2, y2, x3, y3, x, y):
# 三角形ABC的面积
ABC = IsTrangleOrArea(x1, y1, x2, y2, x3, y3)
if ABC:
# 三角形PBC的面积
PBC = IsTrangleOrArea(x, y, x2, y2, x3, y3)
# 三角形ABC的面积
PAC = IsTrangleOrArea(x1, y1, x, y, x3, y3)
# 三角形ABC的面积
PAB = IsTrangleOrArea(x1, y1, x2, y2, x, y)
return (round(ABC, 3) == round(PBC + PAC + PAB, 3))
else:
return False
ls = []
# a, b, c, d = 0, 0, 1, 30
arr1=arr[1:]
arr1=[(item[0]+100,item[1],item[2],item[4])for item in arr1]
for point in arr1:
x4, y4, z4 = point[0], point[1], point[2]
x5, y5, z5 = touying(a1, b1, c1, d1, x4, y4, z4)
juli_x = juli_pointtoline(x5, y5, z5, xzh)
juli_y = juli_pointtoline(x5, y5, z5, yzh)
ls.append([juli_x, juli_y,point[0], point[1], point[2],point[3]])
# with_goto = goto.with_goto
# print(IsInside(0,0,1,1,2,2.1,0,0))
print('945:',ls)
ls=[[item[0],item[1],item[2],item[3],item[4],item[5]]for item in ls]
import pandas as pd
def plot_triangle(x1, y1, x2, y2, x3, y3, x4, y4):
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
# 将字体修改为 支持雅黑 ---支持中文
plt.rcParams['font.sans-serif'] = 'SimHei'
# 修改编码 让其支持负号
plt.rcParams['axes.unicode_minus'] = False
x_ls = [x1, x2, x3, x4]
y_ls = [y1, y2, y3, y4]
global df, df1
# plt.scatter(df1.iloc[:,0],df1.iloc[:,1], s=50,
# c='r',
# marker='*',
# alpha=0.5)
# plt.scatter(x_ls, y_ls, marker='*', alpha=0.5)
x = x_ls[:-1] + [x_ls[0]]
y = y_ls[:-1] + [y_ls[0]]
plt.plot(x, y, linewidth=1, color='red')
x_two = [x3, x1]
y_two = [y3, y1]
plt.scatter(x4, y4, s=50,
c='black',
marker='*',
alpha=0.5)
# plt.plot(x_two, y_two, linewidth=1, color='red')
# plt.fill(x_ls, y_ls, facecolor='red', alpha=0.5)
# fig.add_subplot(2, 1, 2)
# fig.add_subplot(2, 2, 3)
#
# fig.add_subplot(2, 2, 4)
# 图片保存
# plt.savefig('./子图绘制.png')
# 3、展示
plt.show()
def waibaoluo(ls):
global df1
df = pd.DataFrame(ls)
# print(df)
# lenth = ls.__len__()
df = df.sort_values(by=0)
df = df.reset_index(drop=True)
# print(df)
df['x'] = df.iloc[:, 0]
df['y'] = df.iloc[:, 1]
df['rx'] = df.iloc[:, 2]
df['ry'] = df.iloc[:, 3]
df['rz'] = df.iloc[:, 4]
del df[0], df[1],df[2],df[3],df[4]
print('1010df:',df)
xmin = df.iloc[0].x
ymin = df.iloc[0].y
ox=df.iloc[0].rx
oy = df.iloc[0].ry
oz = df.iloc[0].rz
df = df.drop(index=0)
df['xielv'] = (df['y'] - ymin) / (df['x'] - xmin)
df['juli'] = (df['x'] - xmin) ** 2 + (df['y'] - ymin) ** 2
df = df.sort_values(by=['xielv', 'juli'], ascending=[False, False]).reset_index(drop=True)
# print(df)
# df.to_csv('data/df.csv')
# df1=pd.read_csv('data/df.csv')
A = xmin, ymin
B = df.iloc[0].x, df.iloc[0].y
C = df.iloc[1].x, df.iloc[1].y
ls_new = []
ls_new.append(A)
ls_new.append(B)
for i in range(2, len(df)):
condition = False
D = df.iloc[i].x, df.iloc[i].y
if not IsInside(A[0], A[1], B[0], B[1], D[0], D[1], C[0], C[1]):
# plot_triangle(A[0], A[1], B[0], B[1], D[0], D[1], C[0], C[1])
ls_new.append(tuple(C))
C = df.iloc[i].x,df.iloc[i].y
condition = True
else:
# plot_triangle(A[0], A[1], B[0], B[1], D[0], D[1], C[0], C[1])
ls_it = []
df.iloc[i - 1].x,df.iloc[i - 1].y = -999, -999
if len(ls_new) > 2:
ls_it = list(range(2, len(ls_new)))
if ls_it != None:
ls_it.reverse()
for j in ls_it:
B = ls_new[j]
print('B:', B)
for k in range(j, len(ls_new)):
C = ls_new[k]
if IsInside(A[0], A[1], B[0], B[1], D[0], D[1], C[0], C[1]):
# plot_triangle(A[0], A[1], B[0], B[1], D[0], D[1], C[0], C[1])
# if C in ls_new:
# print(C)
# print(tuple(C))
ls_new.remove(tuple(C))
cond = (df.iloc[:]['x'] == C[0]) & (df.iloc[:]['y'] == C[1])
# print(cond)
df_con = df[cond]
# df_con.loc['x']=999
if i < len(ls):
C = df.iloc[i].x, df.iloc[i].y
continue
B = df.iloc[i - 1].x, df.iloc[i - 1].y
if i + 1 < len(ls) and not condition:
C = df.iloc[i + 1].x, df.iloc[i + 1].y
print(df)
is999 = df['x'] == -999
cond999 = []
for i in range(len(df)):
if is999[i]:
cond999.append(i)
print(cond999)
df = df.drop(index=cond999)
df.index = [index for index in range(1, len(df) + 1)]
bool_arr = df['x'] == df['x'].max()
bool_arr = list(bool_arr)
index = bool_arr.index(True)
df_front = df.iloc[:index + 1]
df_rear = df.iloc[index:]
df2 = pd.DataFrame([[xmin, ymin, 0, 0,ox,oy,oz]],
columns=['x', 'y', 'xielv', 'juli','rx','ry','rz'])
print('line1089:',df2)
print(df2.iloc[0])
df = pd.concat([df2, df, df2]).reset_index(drop=True)
print('line1092',df)
return df
# def waibaoluo_reverse(ls):
# global df1
# df = pd.DataFrame(ls)
# # print(df)
# # lenth = ls.__len__()
# df = df.sort_values(by=0)
# df = df.reset_index(drop=True)
# # print(df)
# df['x'] = df.iloc[:, 0]
# df['y'] = df.iloc[:, 1]
# del df[0], df[1]
# print(df)
#
#
# xmin = df.iloc[0, 0]
# ymin = df.iloc[0, 1]
# df = df.drop(index=0)
# df['xielv'] = (df['y'] - ymin)/(df['x'] - xmin)
# df['juli'] = (df['x'] - xmin) ** 2 + (df['y'] - ymin) ** 2
# df = df.sort_values(by=['xielv', 'juli'], ascending=[True, False]).reset_index(drop=True)
# print(df)
# df1=df.copy()
# A = xmin, ymin
# B = df.iloc[0][0], df.iloc[0][1]
# C = df.iloc[1][0], df.iloc[1][1]
#
# ls_new = []
# ls_new.append(A)
# ls_new.append(B)
#
# for i in range(2, len(df)):
# condition=False
# D = df.iloc[i][0], df.iloc[i][1]
# if not IsInside(A[0], A[1], B[0], B[1], D[0], D[1], C[0], C[1]):
# plot_triangle(A[0], A[1], B[0], B[1], D[0], D[1], C[0], C[1])
# ls_new.append(tuple(C))
# C=df.iloc[i][:2]
# condition=True
# else:
# xy=df[(df['x']==C[0])&(df['y']==C[1])]
# xy['x'],xy['y']=(-999,-999)
# if tuple(C) in ls:
# C=tuple(C)
# ls.remove(C)
# plot_triangle(A[0], A[1], B[0], B[1], D[0], D[1], C[0], C[1])
# ls_it = []
# df.iloc[i-1][:2]=[-999,-999]
# if len(ls_new) > 2:
# ls_it = list(range(2, len(ls_new)))
# if ls_it != None:
# ls_it.reverse()
#
# for j in ls_it:
# B = ls_new[j]
# print('B:',B)
# for k in range(j, len(ls_new)):
# C = ls_new[k]
# if IsInside(A[0], A[1], B[0], B[1], D[0], D[1], C[0], C[1]):
# plot_triangle(A[0], A[1], B[0], B[1], D[0], D[1], C[0], C[1])
# # if C in ls_new:
# # print(C)
# # print(tuple(C))
# ls_new.remove(tuple(C))
# cond=(df.iloc[:]['x']==C[0])&(df.iloc[:]['y']==C[1])
# # print(cond)
# df_con=df[cond]
# # df_con.loc['x']=999
# if i < len(ls):
# C = df.iloc[i][0], df.iloc[i][1]
# continue
# B = df.iloc[i - 1][0], df.iloc[i - 1][1]
# if i + 1 < len(ls) and not condition:
# C = df.iloc[i + 1][0], df.iloc[i + 1][1]
# print(df)
#
#
# print(df)
# is999 = df['x'] == -999
# cond999 = []
#
# for i in range(len(df)):
# if is999[i]:
# cond999.append(i)
#
# print(cond999)
# df = df.drop(index=cond999)
# df.index = [index for index in range(1, len(df) + 1)]
# bool_arr = df['x'] == df['x'].max()
# bool_arr = list(bool_arr)
# index = bool_arr.index(True)
# df_front = df.iloc[:index + 1]
# df_rear = df.iloc[index:]
# df2 = pd.DataFrame([[xmin, ymin, 0, 0]], columns=['x', 'y', '1', '2'])
# print(df2)
# print(df2.iloc[0])
# df = pd.concat([df2, df, df2]).reset_index(drop=True)
# return df
#
#
# # df=waibaoluo_reverse(ls)
# df = pd.DataFrame(ls)
# # print(df)
# # lenth = ls.__len__()
# df = df.sort_values(by=0)
# df = df.reset_index(drop=True)
# # print(df)
# df['x'] = df.iloc[:, 0]
# df['y'] = df.iloc[:, 1]
# del df[0], df[1]
# print(df)
#
#
# xmin = df.iloc[0, 0]
# ymin = df.iloc[0, 1]
# df = df.drop(index=0)
# df['xielv'] = (df['y'] - ymin)/(df['x'] - xmin)
# df['juli'] = (df['x'] - xmin) ** 2 + (df['y'] - ymin) ** 2
# df = df.sort_values(by=['xielv', 'juli'], ascending=[True, False]).reset_index(drop=True)
# print(df)
# df1=df.copy()
# print(df)
# def orientation(p,q,r):
# val = (q[1] - p[1]) * (r[0] - q[0]) - (q[0] - p[0]) * (r[1] - q[1])
#
# if (val == 0):
# return 0 # colinear
# if val > 0:
# return 1
# else:
# return 2
#
#
# }
# x_ls=df['x']
# y_ls=df['y']
def duplicated(i, j, k, l):
ls = i, j, k, l
c1 = 0
while (c1 < ls.__len__() - 1):
c2 = c1 + 1
while (c2 < ls.__len__()):
if ls[c1] == ls[c2]:
return True
c2 += 1
c1 += 1
return False
# def zuhe(l):
# ls = []
# for i in range(l):
# for j in range(l):
# for k in range(l):
# for l in range(l):
# if duplicated(i, j, k, l):
# continue
# ls.append((i, j, k, l))
def test(ls):
import matplotlib.pyplot as plt
import numpy as np
ijl_ls = []
global df1
df1 = pd.DataFrame(list(ls))
# print(df)
# lenth = ls.__len__()
df1 = df1.sort_values(by=0)
df1 = df1.reset_index(drop=True)
# print(df)
df1['x'] = df1.iloc[:, 0]
df1['y'] = df1.iloc[:, 1]
print('1268:',df1)
df1['type'] = df1.iloc[:, 5]
del df1[0], df1[1],df1[5]
while True:
b = False
for i in range(len(ls)):
if b == True: break
for j in range(len(ls)):
if b == True: break
for k in range(len(ls)):
if b == True: break
for l in range(len(ls)):
# ijk = [i, j, k]
# ijk.sort()
# ijk.append(l)
# if ijk not in ijl_ls:
# ijl_ls.append(ijk)
# else:
# continue
x1, y1 = ls[i][0],ls[i][1]
x2, y2 = ls[j][0],ls[j][1]
x3, y3 = ls[k][0],ls[k][1]
x4, y4 = ls[l][0],ls[l][1]
# print(x1, y1, x2, y2, x3, y3, x4, y4)
if not duplicated(i, j, k, l):
if IsInside(x1, y1, x2, y2, x3, y3, x4, y4):
x_ls = [x1, x2, x3, x4]
y_ls = [y1, y2, y3, y4]
# plt.scatter(x_ls, y_ls,
#
# marker='.',
# alpha=0.5)
# x = x_ls[:-1] + [x_ls[0]]
# y = y_ls[:-1] + [y_ls[0]]
# plt.plot(x, y, linewidth=1, color='red')
# # plt.fill(x_ls, y_ls, facecolor='red', alpha=0.5)
# fig.add_subplot(2, 1, 2)
#
# # fig.add_subplot(2, 2, 3)
# #
# # fig.add_subplot(2, 2, 4)
#
# # 图片保存
# # plt.savefig('./子图绘制.png')
#
# # 3、展示
# plt.show()
# plot_triangle(x1, y1, x2, y2, x3, y3, x4, y4)
del ls[l]
# print(i,j,k,l)
b = True
break
if b == False:
break
print('1314ls::', ls)
# print(type(ls[0][0]))
ls = [(float(xy[0]), float(xy[1]),xy[2],xy[3],xy[4],xy[5]) for xy in ls]
test(ls)
print('1318ls:', ls)
df = waibaoluo(ls)
# x_ls = [xy[0] for xy in ls_new]
# y_ls = [xy[1] for xy in ls_new]
print(1332,df)
df['y']-=100
df['tmp']=df['x']
df['x']=df['y']
df['y']=df['tmp']
del df['tmp']
print('line1329',df)
df1['tmp']=df1['x']
df1['x']=df1['y']
df1['y']=df1['tmp']
del df1['tmp']
df1['x']-=100
print('line1343df1:',df1)
df.to_csv('./data/大坝图.csv')
df.to_json('data/大坝图xz.json')
# 散点图
# 直角坐标系 中--- 点 ---横纵坐标 ---(x1,y1) (x2,y2) ....
import matplotlib.pyplot as plt
import numpy as np
# # 1、创建画布
# plt.figure()
#
# # 2、绘图
# # 需要准备两个长度相同的数组
# x = np.array([1, 2, 3, 4, 5])
# y = np.array([18, 20, 21, 15, 13])
#
# # 绘制散点图
# # s 表示点的大小--可以指定数组或者 具体的点的大小
# # c 表示点的颜色 --可以指定数组或者具体的一个颜色
# # marker 点的样式
# # alpha 透明度 --[0,1]
# plt.scatter(x, y, s=[30, 20, 10, 5, 50],
# c=['r', 'g', 'b', 'black', 'c'],
# marker='*',
# alpha=0.5)
# # 3、展示
# plt.show()
# 散点图 ---应用场景:
# 可以用来查看 发展趋势
# 可以用来查看数据集中数据的分布状态
# 如何增加子图 ???
# 1、创建画布 ---返回画布对象
fig = plt.figure(figsize=(24,20))
# 将字体修改为 支持雅黑 ---支持中文
plt.rcParams['font.sans-serif'] = 'SimHei'
# 修改编码 让其支持负号
plt.rcParams['axes.unicode_minus'] = False
# 调整子图的间距
# wspace=None, 具体的数值 ---便是宽度间距为wspace倍的子图宽度
# hspace=None 具体的数值 ---表示的高度间距为 hspace倍的子图高度
# plt.subplots_adjust(hspace=0.3)
# 增加子图
# 参数1 绘制的子图的 行数
# 参数2 绘制的子图的 列数
# 参数3 绘制的子图的 编号
# fig.add_subplot(2, 1, 1)
# 2、绘图
# 需要准备两个长度相同的数组
# x = np.array([1, 2, 3, 4, 5])
# y = np.array([18, 20, 21, 15, 13])
# 绘制散点图
# s 表示点的大小--可以指定数组或者 具体的点的大小
# c 表示点的颜色 --可以指定数组或者具体的一个颜色
# marker 点的样式
# alpha 透明度 --[0,1]
# plt.scatter(x_ls, y_ls,
#
# marker='.',
# alpha=0.5)
# for i in range(len(x_ls)):
# for j in range(len(y_ls)):
# x = x_ls[i], x_ls[j]
# y = y_ls[i], y_ls[j]
# plt.plot(x, y, linewidth=1, color='red')
plt.plot(df['x'], df['y'], linewidth=1, color='red')
plt.fill(df['x'], df['y'], facecolor='red', alpha=0.5)
print(1398,df1)
plt.scatter(df1['x'], df1['y'], s=50,
c='black',
marker='*',
alpha=0.5)
from matplotlib import pyplot as plt
import numpy as np
# fig = plt.figure()
ax = fig.add_subplot(111)
# A = -0.75, -0.25, 0, 0.25, 0.5, 0.75, 1.0
# B = 0.73, 0.97, 1.0, 0.97, 0.88, 0.73, 0.54
# plt.plot(A,B)# annotations at the side (ordered by B values)
#
x0,x1=ax.get_xlim()
y0,y1=ax.get_ylim()
for ii, ind in enumerate(np.argsort(df1['type'])):
x = df1.iloc[ind].x
y = df1.iloc[ind].y
xPos = x1 + .02 * (x1 - x0)
yPos = y0 + ii * (y1 - y0)/(len(df1['type']) - 1)
ax.annotate('',#label,
xy=(x, y),
xycoords='data',
xytext=(xPos, yPos),
textcoords='data',
arrowprops=dict(
connectionstyle="arc3,rad=0.",
shrinkA=0, shrinkB=10,
arrowstyle= '-|>',
ls= '-', linewidth=2
),
va='bottom',
ha='left',
zorder=19
)
ax.text(xPos + .01 * (x1 - x0),
yPos,
'{}:({:.2f}, {:.2f})'.format(df1.iloc[ind].type,x,y),
transform=ax.transData,
va='center')
plt.grid()
plt.xlabel('坝横')
plt.ylabel('高程')
# fig.add_subplot(2, 1, 2)
# fig.add_subplot(2, 2, 3)
#
# fig.add_subplot(2, 2, 4)
# 图片保存
plt.savefig('./大坝图11.png')
# 3、展示
plt.show()
# input('按回车以继续')