接续博文 “【Python_绘图】折线图” CSDN
功能
- 数据:读取表格(可指定Sheet表……也可指定Sheet表中的特定列)
- 绘图样式:多条折线图+散点图 → 标记点折线图
- 设置参数:设置轴标题、添加分界线等
代码
import matplotlib.pyplot as plt import xlrd import numpy as np import seaborn as sns # 设置字体格式,以显示中文 plt.rcParams['font.sans-serif'] = ['Times New Roman'] x_data = [] y1_data = [] y2_data = [] y3_data = [] y4_data = [] y5_data = [] y6_data = [] # 读取表格数据 data = xlrd.open_workbook(r'D:\mekong_NLP\作图\ 作图数据汇总\图三 情感折线与词云\ 情感分值作图表.xlsx') table = data.sheets()[0] # 表格中的Sheet1 x_data = list(range(1971,2021,1)) x_ticks=np.arange(1971,2021,5) #读取第x行 cap1 = table.row_values(0) cap2 = table.row_values(1) cap3 = table.row_values(2) cap4 = table.row_values(3) cap5 = table.row_values(4) cap6 = table.row_values(5) for i in range(0, len(x_data)): y1_data.append(cap1[i]) for i in range(0, len(x_data)): y2_data.append(cap2[i]) for i in range(0, len(x_data)): y3_data.append(cap3[i]) for i in range(0, len(x_data)): y4_data.append(cap4[i]) for i in range(0, len(x_data)): y5_data.append(cap5[i]) for i in range(0, len(x_data)): y6_data.append(cap6[i]) #逐条 作折线图 plt.plot(x_data, y1_data, c='crimson',linestyle=':',linewidth=2,label='China') plt.plot(x_data, y2_data, c='coral',linestyle=':',linewidth=2,label='Myanmar') plt.plot(x_data, y3_data, c='hotpink',linestyle=':',linewidth=2,label='Laos') plt.plot(x_data, y4_data, c='blue',linestyle=':',linewidth=2,label='Thailand') plt.plot(x_data, y5_data, c='lightsteelblue',linestyle=':',linewidth=2,label='Cambodia') plt.plot(x_data, y6_data, c='cornflowerblue',linestyle=':',linewidth=2,label='Vietnam') #逐条线 作散点图 plt.scatter(x_data, y1_data, c='crimson',s=15) plt.scatter(x_data, y2_data, c='coral',s=15) plt.scatter(x_data, y3_data, c='hotpink',s=15) plt.scatter(x_data, y4_data, c='blue',s=15) plt.scatter(x_data, y5_data, c='lightsteelblue',s=15) plt.scatter(x_data, y6_data, c='cornflowerblue',s=15) #修改图 相关参数 #plt.title('F1值随迭代次数的变化') plt.xticks(x_ticks) plt.tick_params(labelsize=16)#横纵标签大小 plt.xlabel('Year',size=16) plt.ylabel('Sentiment score',size=16) plt.ylim(ymin=-0.80, ymax=0.80) plt.vlines(1991, -0.8, 0.8, colors="black", linestyles="dashed",linewidth=1)#分界线 plt.vlines(1994, -0.8, 0.8, colors="black", linestyles="dashed",linewidth=1) plt.vlines(2008, -0.8, 0.8, colors="black", linestyles="dashed",linewidth=1) plt.vlines(2015, -0.8, 0.8, colors="black", linestyles="dashed",linewidth=1) leg=plt.legend(columnspacing=1,fontsize=16)#图例 leg.get_frame().set_linewidth(0.0)#不显示右边与上边线 sns.despine()#不显示右边与上边线 plt.show()#绘图
效果示例

附:使线贴合纵轴
- 参考:python作图图形不贴着坐标轴?python作图图形不贴着坐标轴? – 知乎
- 增添以下代码即可:
plt.xlim(1971,2021)
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207943.html原文链接:https://javaforall.net
