python plot 畫雙坐標軸 設置百分比展示 和字體等細節


import matplotlib.pyplot as plt
import numpy as np
import pandas as pd  # data processing, CSV file I/O (e.g. pd.read_csv)
import pymssql  # 引入pymssql模塊
import seaborn as sns  # Provides a high level interface for drawing attractive and informative statistical graphics
from matplotlib import ticker
from matplotlib.font_manager import FontProperties
from pylab import *
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif']=['SimHei']#用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus']=False#用來正常顯示負號

if __name__ == '__main__':
 conn = pymssql.connect(host='localhost', user='wonderful', password='wonderful', database='ProcreateV93',
                        charset='GBK')
sql ="select replace(LEFT(CONVERT(varchar(100), op.RecordDate, 120),7),'-','')  AS months, "\
"COUNT(DISTINCT OP.O_iD)   AS patientcount,sum(op.OPSTimes)   optime, "\
"(COUNT(DISTINCT OP.O_iD) + 0.0) / (sum(op.OPSTimes) + 0.0) as pct FROM Oplan op "\
"where op.GroupName is not null "\
"and op.RecordDate is not null "\
"group by replace(LEFT(CONVERT(varchar(100), op.RecordDate, 120),7),'-','') "\
"order by months,patientcount,pct asc"
df0 = pd.read_sql(sql, conn)
print(df0)
df = pd.DataFrame(df0)
vm=df['months'].astype(str)
print(vm)
fig, ax1 = plt.subplots()
plt.xticks(fontsize='10',color='blue',rotation=67)

# 柱形圖
ax1.bar(df.months.values,df.patientcount.values, color="black", alpha=0.5, label="患者人數")
ax1.set_xlabel("同期做周期的患者人數")
ax1.set_ylabel("周期數")
#  label下邊界
plt.subplots_adjust(bottom=0.18)

ax2 = ax1.twinx()
# 折線圖
ax2.plot(df.months.values, df.pct.values, color="green", label="周期數")
ax2.yaxis.set_major_formatter(ticker.PercentFormatter(xmax=1,decimals=0))
ax2.set_ylabel("周期數")
#參數x空值X軸的間隔,第二個參數控制每個間隔顯示的文本,后面兩個參數控制標簽的顏色和旋轉角度
# plt.xticks(rotation=45)
fig.legend(loc="upper right", bbox_to_anchor=(1, 1), bbox_transform=ax1.transAxes)

plt.show();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM