python 画线的种类_python-Matplotlib:如何在x轴上绘制带有分类数据的线?

本文介绍如何使用Python的Matplotlib库,在x轴上绘制具有分类数据的线。示例中,作者展示了如何处理分类数据(如'A', 'B', 'C', 'D', 'E'),并分别用不同颜色的点表示不同的数据系列。通过修复代码中的语法错误,如删除不必要的`str(x_axis)`,以及正确设置xticks,成功地生成了包含多个分类数据线的图表。" 77936818,7198987,汉诺塔变形问题与SSR祈愿,"['算法', '递归', '数学问题', '编程挑战']
摘要由CSDN通过智能技术生成

我正在尝试绘制几条线(而不是条形图,如this case).我的y值是浮点数,而x值是分类数据.如何在matplotlib中做到这一点?

我的价值观:

data1=[5.65,7.61,8.17,7.60,9.54]

data2=[7.61,16.17,16.18,19.54,19.81]

data3=[29.55,30.24,31.51,36.40,35.47]

我的类别:

x_axis=['A','B','C','D','E']

我正在使用的代码没有给我我想要的东西:

import matplotlib.pyplot as plt

fig=plt.figure() #Creates a new figure

ax1=fig.add_subplot(111) #Plot with: 1 row, 1 column, first subplot.

line1 = ax1.plot(str(x_axis), data1,'ko-',label='line1') #Plotting data1

line2 = ax1.plot(str(x_axis), data2,'ro-',label='line2') #Plotting data2

line3 = ax1.plot(str(x_axis), data3,'mo-',label='line3') #Plotting data3

plt.xticks(range(len(data3)), x_axis, size='small')

ax1.set_ylim(0,51)

ax1.set_ylabel('y values',fontsize=12)

#Assigning labels

lines = line1+line2+line3

labels = [l.get_label() for l in lines]

ax1.legend(lines,labels,loc='upper center', prop={'size':10}, bbox_to_anchor=(0.5, -0.13), fancybox=True, shadow=True, ncol=5)

ax1.set_xlabel('Categories',fontsize=14)

plt.setp(ax2.get_xticklabels(), visible=True)

title_string=('Plotting categories vs y values in matplotlib')

plt.suptitle(title_string, y=1.0, fontsize=17)

fig.tight_layout()

fig.subplots_adjust(top=0.92,bottom=0.2)

plt.show()

plt.savefig('myplot.jpg',bbox_inches='tight')

plt.close()

解决方法:

关于某些语法,您的代码看起来不正确:

line1 = ax1.plot(data1,'ko-',label='line1') #no need for str(x_axis)

line2 = ax1.plot(data2,'ro-',label='line2')

line3 = ax1.plot(data3,'mo-',label='line3')

plt.setp(ax1.get_xticklabels(), visible=True) #not ax2

当我解决这些问题后,绘图工作正常

plt.xticks(range(len(data3)), x_axis, size='small')

是将列表分配给x轴的正确方法.

标签:categorical-data,matplotlib,plot,python

来源: https://codeday.me/bug/20191027/1946024.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值