【Python_绘图】折线图与散点图

该博客介绍了如何使用Python的matplotlib库和seaborn库来读取Excel数据并绘制多条折线图及散点图。示例代码展示了如何设置轴标题、添加分界线以及调整图例和坐标轴参数,用于展示不同国家的情感得分随时间变化趋势。
摘要由CSDN通过智能技术生成

接续博文 “【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\作图\20210512 作图数据汇总\图三 情感折线与词云\20210606 情感分值作图表.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()#绘图

效果示例

附:使线贴合纵轴

plt.xlim(1971,2021)

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值