Skip to content

Commit

Permalink
1.2.5pre9 优化UI与绘图逻辑 PreRelease
Browse files Browse the repository at this point in the history
  • Loading branch information
Ginsakura committed Dec 26, 2023
1 parent 0b5b04d commit 945b7ad
Show file tree
Hide file tree
Showing 8 changed files with 192 additions and 190 deletions.
100 changes: 54 additions & 46 deletions AllHitAnalyze.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
import json
# import numpy as np
import matplotlib.gridspec as gridspec
import matplotlib.patches as patches
import matplotlib.pyplot as plt
import sqlite3 as sql

from matplotlib import pyplot as plt
from matplotlib.pyplot import MultipleLocator

class HitAnalyze(object):
"""docstring for HitAnalyze"""
def __init__(self,isOpen=False):
def __init__(self):
super(HitAnalyze, self).__init__()
self.isOpen = isOpen
db = sql.connect('./musync_data/HitDelayHistory_v2.db')
cur = db.cursor()
res = cur.execute('select HitMap from HitDelayHistory')
Expand Down Expand Up @@ -91,12 +92,32 @@ def Show(self):
print('cyan Exact:',self.avgEX,self.varEX,self.stdEX,self.sumYnumEX)
else:
self.enablePDFofCyanExact = False
self.Analyze()

fig = plt.figure(f"HitAnalyze (Total:{self.sumYnum}, CyanEx:{self.rate[0]}, BlueEx:{self.rate[1]}, Great:{self.rate[2]}, Right:{self.rate[3]}, Miss:{self.rate[4]})", figsize=(16, 9))
fig.clear()
# fig.subplots_adjust(**{"left":0,"bottom":0,"right":1,"top":1})
plt.rcParams['font.serif'] = ["LXGW WenKai Mono"]
plt.rcParams["font.sans-serif"] = ["LXGW WenKai Mono"]
# plt.rcParams["figure.subplot.bottom"] = 0
# plt.rcParams["figure.subplot.hspace"] = 0
# plt.rcParams["figure.subplot.left"] = 0
# plt.rcParams["figure.subplot.right"] = 0
# plt.rcParams["figure.subplot.top"] = 0
# plt.rcParams["figure.subplot.wspace"] = 0
grid = gridspec.GridSpec(3, 5, left=0.045, right=1, top=1, bottom=0.06, wspace=0, hspace=0)

# print(plt.rcParams)

ax1 = fig.add_subplot(grid[:,:])
self.Line(ax1)
if config['EnableDonutChartinAllHitAnalyze']:
self.Pie()
ax2 = fig.add_subplot(grid[0:2,3:])
ax2.add_patch(patches.Rectangle((-1.5, -1.5), 3, 3, color="white"))
# print(ax2.get_subplotspec())
self.Pie(ax2)
plt.show()

def Analyze(self):
def Line(self,ax1):
e = 2.718281828459045
p = 3.141592653589793
def PDFx(x):
Expand Down Expand Up @@ -136,55 +157,52 @@ def PDFxEX(x):
for ids in range(maxLen//10,maxY+maxLen//10,maxLen//10):
yLine.append([ids for i in range(-150,251)])

fig = plt.figure(f"HitAnalyze (Total:{self.sumYnum}, CyanEx:{self.rate[0]}, BlueEx:{self.rate[1]}, Great:{self.rate[2]}, Right:{self.rate[3]}, Miss:{self.rate[4]})", figsize=(16, 8))
fig.subplots_adjust(**{"left":0.045,"bottom":0.06,"right":1,"top":1})
if self.isOpen: fig.clear()
plt.xlabel("Delay(ms)",fontproperties='LXGW WenKai Mono',fontsize=15)
plt.ylabel("HitCount",fontproperties='LXGW WenKai Mono',fontsize=15)
plt.xlim(-155,255)
ax1.set_xlabel("Delay(ms)", fontsize=15)
ax1.set_ylabel("HitCount", fontsize=15)
ax1.set_xlim(-155,255)

plt.gca().xaxis.set_major_locator(MultipleLocator(10))
ax1.xaxis.set_major_locator(MultipleLocator(10))
if maxY < 100:
plt.gca().yaxis.set_major_locator(MultipleLocator(5))
ax1.yaxis.set_major_locator(MultipleLocator(5))
elif maxY < 1000:
plt.gca().yaxis.set_major_locator(MultipleLocator(25))
ax1.yaxis.set_major_locator(MultipleLocator(25))
elif maxY < 2000:
plt.gca().yaxis.set_major_locator(MultipleLocator(50))
ax1.yaxis.set_major_locator(MultipleLocator(50))
elif maxY < 4000:
plt.gca().yaxis.set_major_locator(MultipleLocator(75))
ax1.yaxis.set_major_locator(MultipleLocator(75))
elif maxY < 8000:
plt.gca().yaxis.set_major_locator(MultipleLocator(150))
ax1.yaxis.set_major_locator(MultipleLocator(150))
elif maxY < 16000:
plt.gca().yaxis.set_major_locator(MultipleLocator(300))
ax1.yaxis.set_major_locator(MultipleLocator(300))
elif maxY < 32000:
plt.gca().yaxis.set_major_locator(MultipleLocator(600))
ax1.yaxis.set_major_locator(MultipleLocator(600))

x=0
for ids in yLine:
plt.plot(self.xAxis,ids,linestyle='--',alpha=1,linewidth=1,color=colors[x])
ax1.plot(self.xAxis,ids,linestyle='--',alpha=1,linewidth=1,color=colors[x])
x = (x+1)%7

##正态分布函数曲线
pdfAxis = [PDFx(i) for i in self.xAxis]
plt.plot(self.xAxis,pdfAxis,linestyle='-',alpha=1,linewidth=1,color='grey',
ax1.plot(self.xAxis,pdfAxis,linestyle='-',alpha=1,linewidth=1,color='grey',
label=f'Fitting all data\n(μ={self.avg}\n σ={self.std})')

pdfExAxis = [PDFxEx(i) for i in self.xAxis]
plt.plot(self.xAxis,pdfExAxis,linestyle='-',alpha=1,linewidth=1,color='black',
ax1.plot(self.xAxis,pdfExAxis,linestyle='-',alpha=1,linewidth=1,color='black',
label=f'Fitting only on Exact rate\n(μ={self.avgEx}\n σ={self.stdEx})')

if self.enablePDFofCyanExact:
pdfEXAxis = [PDFxEX(i) for i in self.xAxis]
plt.plot(self.xAxis,pdfEXAxis,linestyle='-',alpha=1,linewidth=1,color='blue',
ax1.plot(self.xAxis,pdfEXAxis,linestyle='-',alpha=1,linewidth=1,color='blue',
label=f'Fitting only on Cyan Exact rate\n(μ={self.avgEX}\n σ={self.stdEX})')


for i in range(len(self.xAxis)):
plt.bar(self.xAxis[i],self.yAxis[i])
ax1.bar(self.xAxis[i],self.yAxis[i])

plt.legend(loc='upper left',prop={'family':'LXGW WenKai Mono','weight':'normal','size':15}) #显示上面的label
ax1.legend(loc='upper left',prop={'size':15}) #显示上面的label

def Pie(self):
def Pie(self,ax2):
def Percentage(num, summ):
per = num/summ*100
return ' '*(3-len(str(int((per)))))+'%.3f%%'%(per)
Expand All @@ -195,24 +213,14 @@ def PercentageLabel(num, summ):
per = num/summ*100
return '%.1f%%'%(per)
accurateRateSum = sum(self.accurateRate)
fig = plt.figure(f'Pie', figsize=(7, 6))
fig.subplots_adjust(**{"left":0,"bottom":0,"right":1,"top":1})
if self.isOpen: fig.clear()

wedgeprops = {'width':0.15, 'edgecolor':'black', 'linewidth':0.2}
plt.pie(self.accurateRate, wedgeprops=wedgeprops, startangle=90,
colors=['#AAFFFF','#00B5B5','#78BEFF','cyan', 'blue', 'green', 'orange', 'red'],
ax2.pie(self.accurateRate, wedgeprops=wedgeprops, startangle=90, autopct='%1.1f%%', pctdistance = 0.95, labeldistance = 1.05,
colors=['#c8fff7','#9ff2ee','#69e0ce','#53cac4', '#2F97FF', 'green', 'orange', 'red'],
# autopct=lambda x:'%.3f%%'%(x*sum(self.accurateRate)/100+0.5),
labels=[
f"EXACT±5ms {PercentageLabel(self.accurateRate[0], accurateRateSum)}",
f"EXACT±10ms {PercentageLabel(self.accurateRate[1], accurateRateSum)}",
f"EXACT±20ms {PercentageLabel(self.accurateRate[2], accurateRateSum)}",
f"EXACT±45ms {PercentageLabel(self.accurateRate[3], accurateRateSum)}",
f"Exact {PercentageLabel(self.accurateRate[4], accurateRateSum)}",
f"Great {PercentageLabel(self.accurateRate[5], accurateRateSum)}",
f"Right {PercentageLabel(self.accurateRate[6], accurateRateSum)}",
f"Miss {PercentageLabel(self.accurateRate[7], accurateRateSum)}"],
textprops={'family':'LXGW WenKai Mono','weight':'normal','size':12})
plt.legend(prop={'family':'LXGW WenKai Mono','weight':'normal','size':12},loc='center',
labels=["EXACT±5ms", "EXACT±10ms", "EXACT±20ms", "EXACT±45ms", "Exact", "Great", "Right", "Miss"],
textprops={'size':12})
ax2.legend(prop={'size':12},loc='center',
labels=[
f"EXACT± 5ms {Count(self.accurateRate[0])} {Percentage(self.accurateRate[0], accurateRateSum)}",
f"EXACT±10ms {Count(self.accurateRate[1])} {Percentage(self.accurateRate[1], accurateRateSum)}",
Expand All @@ -223,9 +231,9 @@ def PercentageLabel(num, summ):
f"Right+250ms {Count(self.accurateRate[6])} {Percentage(self.accurateRate[6], accurateRateSum)}",
f"Miss > 250ms {Count(self.accurateRate[7])} {Percentage(self.accurateRate[7], accurateRateSum)}"],
)
plt.text(-0.41,0.48,f"EXACT {Count(sum(self.accurateRate[0:4]))} {Percentage(sum(self.accurateRate[0:4]), accurateRateSum)}",
ha='left',va='top',fontsize=12,color='#00B5B5',
fontdict={'family':'LXGW WenKai Mono','weight':'normal'})
ax2.text(-0.41,0.48,f"EXACT {Count(sum(self.accurateRate[0:4]))} " \
f"{Percentage(sum(self.accurateRate[0:4]), accurateRateSum)}",
ha='left',va='top',fontsize=12,color='#00B5B5', )

if __name__ == '__main__':
HitAnalyze().Show()
40 changes: 21 additions & 19 deletions AvgAcc_SynxAnalyze.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,31 +13,33 @@ def Analyze():
sync.append(float(ids[1]))

fig = plt.figure('AvgAcc与SYNC.Rate散点图', figsize=(10, 10))
fig.clear()
# print(acc,sync)

fig.subplots_adjust(**{"left":0.06,"bottom":0.05,"right":0.998,"top":0.994})
plt.gca().yaxis.set_major_locator(MultipleLocator((max(sync)-min(sync))//15))
plt.gca().xaxis.set_major_locator(MultipleLocator((max(acc)-min(acc))//10))
plt.xlim(int(min(acc))-1,int(max(acc))+1)
plt.ylim(int(min(sync))-1,int(max(sync))+1)
ax = fig.add_subplot()
ax.yaxis.set_major_locator(MultipleLocator((max(sync)-min(sync))//15))
ax.xaxis.set_major_locator(MultipleLocator((max(acc)-min(acc))//10))
ax.set_xlim(int(min(acc))-1,int(max(acc))+1)
ax.set_ylim(int(min(sync))-1,int(max(sync))+1)

plt.plot([i for i in range(int(min(acc))-3,int(max(acc))+3)],[122 for i in range(int(min(acc))-3,int(max(acc))+3)],linestyle='--',alpha=0.7,linewidth=1,color='black')
plt.text(int(max(acc))-5,122.5,'BlackEx',ha='center',va='top',fontsize=7.5,alpha=0.7)
plt.plot([i for i in range(int(min(acc))-3,int(max(acc))+3)],[120 for i in range(int(min(acc))-3,int(max(acc))+3)],linestyle='--',alpha=0.7,linewidth=1,color='red')
plt.text(int(max(acc))-5,120.5,'RedEx',ha='center',va='top',fontsize=7.5,alpha=0.7)
plt.plot([i for i in range(int(min(acc))-3,int(max(acc))+3)],[117 for i in range(int(min(acc))-3,int(max(acc))+3)],linestyle='--',alpha=0.7,linewidth=1,color='cyan')
plt.text(int(max(acc))-5,117.5,'CyanEx',ha='center',va='top',fontsize=7.5,alpha=0.7)
plt.plot([i for i in range(int(min(acc))-3,int(max(acc))+3)],[110 for i in range(int(min(acc))-3,int(max(acc))+3)],linestyle='--',alpha=0.7,linewidth=1,color='blue')
plt.text(int(max(acc))-5,110.5,'S',ha='center',va='top',fontsize=7.5,alpha=0.7)
plt.plot([i for i in range(int(min(acc))-3,int(max(acc))+3)],[95 for i in range(int(min(acc))-3,int(max(acc))+3)],linestyle='--',alpha=0.7,linewidth=1,color='green')
plt.text(int(max(acc))-5,95.5,'A',ha='center',va='top',fontsize=7.5,alpha=0.7)
plt.plot([i for i in range(int(min(acc))-3,int(max(acc))+3)],[75 for i in range(int(min(acc))-3,int(max(acc))+3)],linestyle='--',alpha=0.7,linewidth=1,color='orange')
plt.text(int(max(acc))-5,75.5,'B',ha='center',va='top',fontsize=7.5,alpha=0.7)
ax.plot([i for i in range(int(min(acc))-3,int(max(acc))+3)],[122 for i in range(int(min(acc))-3,int(max(acc))+3)],linestyle='--',alpha=0.7,linewidth=1,color='black')
ax.text(int(max(acc))-5,122.5,'BlackEx',ha='center',va='top',fontsize=7.5,alpha=0.7)
ax.plot([i for i in range(int(min(acc))-3,int(max(acc))+3)],[120 for i in range(int(min(acc))-3,int(max(acc))+3)],linestyle='--',alpha=0.7,linewidth=1,color='red')
ax.text(int(max(acc))-5,120.5,'RedEx',ha='center',va='top',fontsize=7.5,alpha=0.7)
ax.plot([i for i in range(int(min(acc))-3,int(max(acc))+3)],[117 for i in range(int(min(acc))-3,int(max(acc))+3)],linestyle='--',alpha=0.7,linewidth=1,color='cyan')
ax.text(int(max(acc))-5,117.5,'CyanEx',ha='center',va='top',fontsize=7.5,alpha=0.7)
ax.plot([i for i in range(int(min(acc))-3,int(max(acc))+3)],[110 for i in range(int(min(acc))-3,int(max(acc))+3)],linestyle='--',alpha=0.7,linewidth=1,color='blue')
ax.text(int(max(acc))-5,110.5,'S',ha='center',va='top',fontsize=7.5,alpha=0.7)
ax.plot([i for i in range(int(min(acc))-3,int(max(acc))+3)],[95 for i in range(int(min(acc))-3,int(max(acc))+3)],linestyle='--',alpha=0.7,linewidth=1,color='green')
ax.text(int(max(acc))-5,95.5,'A',ha='center',va='top',fontsize=7.5,alpha=0.7)
ax.plot([i for i in range(int(min(acc))-3,int(max(acc))+3)],[75 for i in range(int(min(acc))-3,int(max(acc))+3)],linestyle='--',alpha=0.7,linewidth=1,color='orange')
ax.text(int(max(acc))-5,75.5,'B',ha='center',va='top',fontsize=7.5,alpha=0.7)

plt.scatter(acc,sync,alpha=0.7,color='#8a68d0',s=5)
ax.scatter(acc,sync,alpha=0.7,color='#8a68d0',s=5)
# plt.plot(acc,sync,'o')
plt.xlabel('AvgAcc (ms)') #x_label
plt.ylabel('SYNC.Rate (%)')#y_label
ax.set_xlabel('AvgAcc (ms)') #x_label
ax.set_ylabel('SYNC.Rate (%)')#y_label

plt.show()

Expand Down
89 changes: 42 additions & 47 deletions Difficulty_ScoreAnalyze.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import json
import matplotlib.pyplot as plt

from matplotlib import pyplot as plt
from matplotlib.pyplot import MultipleLocator

def Analyze():
Expand All @@ -18,11 +18,11 @@ def Analyze():
if float(ids["SyncNumber"][:-1]) != 0:
diffcute = int(ids["SongName"][3])
if ids["SongName"][1]=="4Key":
diff[0].append(diffcute)
diff[0].append(diffcute-0.15)
score[0].append(float(ids["SyncNumber"][:-1]))
diffSocre[0]['%02d'%diffcute] += [float(ids["SyncNumber"][:-1])]
else: # 6Key Mode
diff[1].append(diffcute+0.3)
diff[1].append(diffcute+0.15)
score[1].append(float(ids["SyncNumber"][:-1]))
diffSocre[1]['%02d'%diffcute] += [float(ids["SyncNumber"][:-1])]
# print(diffSocre)
Expand All @@ -36,76 +36,71 @@ def Analyze():
# diffSocre.pop(ids, None)
# print(diffSocreTrim)

fig = plt.figure('难度与分数散点图', figsize=(6, 8))
fig.subplots_adjust(**{"left":0.071,"bottom":0.07,"right":0.59,"top":0.994})
plt.gca().yaxis.set_major_locator(MultipleLocator(1))
plt.gca().xaxis.set_major_locator(MultipleLocator(1))
plt.xlim(0,16)
fig = plt.figure('难度与分数散点图', figsize=(7, 8))
fig.clear()
fig.subplots_adjust(**{"left":0.083,"bottom":0.07,"right":0.60,"top":0.994})
ax = fig.add_subplot()
axR = ax.twinx()
ax.yaxis.set_major_locator(MultipleLocator(1))
axR.yaxis.set_major_locator(MultipleLocator(1))
ax.xaxis.set_major_locator(MultipleLocator(1))
ax.set_xlim(0,16)
minScore = int(min([min(score[0]),min(score[1])]))
plt.ylim(minScore-1,125)
# print(minScore)
ax.set_ylim(minScore-1,125)
axR.set_ylim(minScore-1,125)

# colors = ['#880000','#008800','#000088','#888800','#880088','#008888','#888888',
# '#FF8888','#88FF88','#8888FF','#CCCC44','#FF88FF','#88FFFF','#000000','#444444']
# for ids in diffSocreTrim:
# plt.plot([i for i in range(17)],[diffSocre[ids][0]]*17,linestyle='--',alpha=0.7,linewidth=1,color=colors[(float(ids)*2)-1],
# label='难度%s 均值:%.3f%%'%(ids,diffSocre[ids][0]))
labels = []
# hards = sorted(list(set(list(diffSocreTrim[0].keys())+list(diffSocreTrim[1].keys()))))
# print(hards)
for ids in diffSocreTrim[0].keys():
# labels.append("4K %s Avg:%03.3f%% %03d"%(ids, diffSocreTrim[0][ids][0], diffSocreTrim[0][ids][1]))
labels.append(f"难度: 4K {ids} Avg:{'%.3f'%diffSocreTrim[0][ids][0]:0>7s}% 计数:{diffSocreTrim[0][ids][1]:0=2d}")
labels.append("")
for ids in diffSocreTrim[1].keys():
labels.append(f"难度: 6K {ids} Avg:{'%.3f'%diffSocreTrim[1][ids][0]:0>7s}% 计数:{diffSocreTrim[1][ids][1]:0=2d}")
print("\n".join(labels))

# for ids in range(0,2):
# for idx in diffSocreTrim[ids].keys():
# print('难度: %s %s\t平均值:%.3f%%\t计数:%d' % (("4K" if ids==0 else "6K"),
# idx,diffSocreTrim[ids][idx][0],diffSocreTrim[ids][idx][1]))

for ids in range(1,16):
plt.plot([ids+0.15]*(125-minScore),[ids for ids in range(minScore,125)],linestyle='--',alpha=0.6,linewidth=1)
for ids in range(0,2):
for idx in diffSocreTrim[ids].keys():
plt.plot([i for i in range(int(idx)+1)],[diffSocreTrim[ids][idx][0]]*(int(idx)+1),linestyle='--',alpha=1,linewidth=1)
ax.plot([ids]*(125-minScore+2),[ids for ids in range(minScore-1,126)],linestyle='--',alpha=0.6,linewidth=1)
# diffSocreTrim:[{'diff':[avg,count]}, {'diff':[avg,count]}]
# [4K, 6K]
for ids in range(0,2): #ids <= [4K, 6K]
for idx in diffSocreTrim[ids].keys(): #idx <= diff
ax.plot([i for i in range(int(idx)+1)] if ids else [i for i in range(int(idx),17)], # '6k=>' if ids else '<=4K'
[diffSocreTrim[ids][idx][0]]*(int(idx)+1) if ids else [diffSocreTrim[ids][idx][0]]*(17-int(idx)), # '6k=>' if ids else '<=4K'
linestyle='--',alpha=1,linewidth=1)

if minScore < 122:
plt.plot([i for i in range(17)],[122]*17,linestyle='-',alpha=0.7,linewidth=1,color='black')
plt.text(14.5,122.5,'BlackEx',ha='center',va='top',fontsize=7.5,alpha=0.7)
ax.plot([i for i in range(17)],[122]*17,linestyle='-',alpha=0.7,linewidth=1,color='black')
ax.text(14.5,122.5,'BlackEx',ha='center',va='top',fontsize=7.5,alpha=0.7)
if minScore < 120:
plt.plot([i for i in range(17)],[120]*17,linestyle='-',alpha=0.7,linewidth=1,color='red')
plt.text(14.5,120.5,'RedEx',ha='center',va='top',fontsize=7.5,alpha=0.7)
ax.plot([i for i in range(17)],[120]*17,linestyle='-',alpha=0.7,linewidth=1,color='red')
ax.text(14.5,120.5,'RedEx',ha='center',va='top',fontsize=7.5,alpha=0.7)
if minScore < 117:
plt.plot([i for i in range(17)],[117]*17,linestyle='-',alpha=0.7,linewidth=1,color='cyan')
plt.text(14.5,117.5,'CyanEx',ha='center',va='top',fontsize=7.5,alpha=0.7)
ax.plot([i for i in range(17)],[117]*17,linestyle='-',alpha=0.7,linewidth=1,color='cyan')
ax.text(14.5,117.5,'CyanEx',ha='center',va='top',fontsize=7.5,alpha=0.7)
if minScore < 110:
plt.plot([i for i in range(17)],[110]*17,linestyle='-',alpha=0.7,linewidth=1,color='blue')
plt.text(14.5,110.5,'S',ha='center',va='top',fontsize=7.5,alpha=0.7)
ax.plot([i for i in range(17)],[110]*17,linestyle='-',alpha=0.7,linewidth=1,color='blue')
ax.text(14.5,110.5,'S',ha='center',va='top',fontsize=7.5,alpha=0.7)
if minScore < 95:
plt.plot([i for i in range(17)],[95]*17,linestyle='-',alpha=0.7,linewidth=1,color='green')
plt.text(14.5,95.5,'A',ha='center',va='top',fontsize=7.5,alpha=0.7)
ax.plot([i for i in range(17)],[95]*17,linestyle='-',alpha=0.7,linewidth=1,color='green')
ax.text(14.5,95.5,'A',ha='center',va='top',fontsize=7.5,alpha=0.7)
if minScore < 75:
plt.plot([i for i in range(17)],[75]*17,linestyle='-',alpha=0.7,linewidth=1,color='orange')
plt.text(14.5,75.5,'B',ha='center',va='top',fontsize=7.5,alpha=0.7)
ax.plot([i for i in range(17)],[75]*17,linestyle='-',alpha=0.7,linewidth=1,color='orange')
ax.text(14.5,75.5,'B',ha='center',va='top',fontsize=7.5,alpha=0.7)

# supported values are '-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted'
plt.plot([int(i)+0.15 for i in diffSocreTrim[0].keys()],[diffSocreTrim[0][ids][0] for ids in diffSocreTrim[0].keys()],
ax.plot([int(i) for i in diffSocreTrim[0].keys()],[diffSocreTrim[0][ids][0] for ids in diffSocreTrim[0].keys()],
linestyle='-',color='orange',marker="D",markerfacecolor="Blue",alpha=0.7,linewidth=2,
label="4Key Mode")
plt.plot([int(i)+0.15 for i in diffSocreTrim[1].keys()],[diffSocreTrim[1][ids][0] for ids in diffSocreTrim[1].keys()],
ax.plot([int(i) for i in diffSocreTrim[1].keys()],[diffSocreTrim[1][ids][0] for ids in diffSocreTrim[1].keys()],
linestyle='-',color='orange',marker="D",markerfacecolor="Red",alpha=0.7,linewidth=2,
label="6Key Mode")

plt.scatter(diff[0],score[0],alpha=0.7,color='#8A68D0',s=5)
plt.scatter(diff[1],score[1],alpha=0.7,color='#F83535',s=5)
plt.text(16.5,123,"\n".join(labels),ha="left",va="top",alpha=1,
ax.scatter(diff[0],score[0],alpha=0.7,color='#8A68D0',s=5)
ax.scatter(diff[1],score[1],alpha=0.7,color='#F83535',s=5)
ax.text(18.2,123,"\n".join(labels),ha="left",va="top",alpha=1,
fontdict={'family':'LXGW WenKai Mono','weight':'normal','size':10})
plt.legend(prop={'family':'LXGW WenKai Mono','weight':'normal','size':10},framealpha=0.4) #显示上面的label
plt.xlabel('Difficulty') #x_label
plt.ylabel('SYNC.Rate')#y_label
ax.legend(prop={'family':'LXGW WenKai Mono','weight':'normal','size':10},framealpha=0.4) #show label
ax.set_xlabel('Difficulty') #x_label
ax.set_ylabel('SYNC.Rate')#y_label

plt.show()

Expand Down
3 changes: 3 additions & 0 deletions FileExport.py

Large diffs are not rendered by default.

Loading

0 comments on commit 945b7ad

Please sign in to comment.