樊敬礼 发表于 2021-1-18 15:52:40

matplotlib.pyplot 柱形图报错

lianjia_position = lianjia['位置']
x = lianjia_position.index
y = lianjia_position.values

plt.figure(figsize=(10,5)) #定义画布大小
plt.bar(x,y,color = 'g')

plt.title('爬取的前20个数据的位置分析柱状图',fontsize = 20) #定义图片标题,字体大小为20
plt.xlabel('位置',fontsize = 18) #定义x轴标题,字体大小为18
plt.ylabel('数量',fontsize = 18) #定义y轴标题,字体大小为18

plt.tick_params(labelsize = 14) #设置坐标轴字体大小
plt.xticks(rotation = 90) #将x轴旋转90度显示

#显示网格线
plt.grid()

#用text显示数值
for a,b in zip(x,y):
      plt.text(a,b + 50,'%s' %b,ha = 'center',va = 'bottom',fontsize = 10)



Traceback (most recent call last):
File "c:/Users/86173/Desktop/CODE/lianjia_analytical.py", line 76, in <module>
    plt.text(a,b + 50,'%s' %b,ha = 'center',va = 'bottom',fontsize = 10)
TypeError: can only concatenate str (not "int") to str

qq1151985918 发表于 2021-1-18 16:05:04

发个代码都只发一半,这么节约的么

樊敬礼 发表于 2021-1-18 16:10:44

qq1151985918 发表于 2021-1-18 16:05
发个代码都只发一半,这么节约的么

前面的应该不会出错,就没发

suchocolate 发表于 2021-1-18 16:12:38

数字和字符串不能用+拼接,把50变成字符串再拼接。

qq1151985918 发表于 2021-1-18 16:13:11

樊敬礼 发表于 2021-1-18 16:10
前面的应该不会出错,就没发

不会出错我们也不知道前边是啥啊?你让我们瞪眼睛瞪出来问题出在哪儿么?我们也得运行看报错理逻辑啊兄弟

樊敬礼 发表于 2021-1-18 16:26:16

qq1151985918 发表于 2021-1-18 16:13
不会出错我们也不知道前边是啥啊?你让我们瞪眼睛瞪出来问题出在哪儿么?我们也得运行看报错理逻辑啊兄弟

import numpy as np #数组运算
import pandas as pd #数据处理
import matplotlib.pyplot as plt #可视化

#matplotlib inline
plt.rcParams['font.sans-serif'] = 'SimHei'   # 使图形中的中文正常编码显示
plt.rcParams['axes.unicode_minus'] = False   # 使坐标轴刻度表签正常显示正负号
lianjia = pd.read_csv(r'C:\Users\86173\Desktop\lianjia.csv',encoding='utf-8-sig')

樊敬礼 发表于 2021-1-18 16:27:38

樊敬礼 发表于 2021-1-18 16:26
import numpy as np #数组运算
import pandas as pd #数据处理
import matplotlib.pyplot as plt #可视 ...

import numpy as np #数组运算
import pandas as pd #数据处理
import matplotlib.pyplot as plt #可视化

#matplotlib inline
plt.rcParams['font.sans-serif'] = 'SimHei'   # 使图形中的中文正常编码显示
plt.rcParams['axes.unicode_minus'] = False   # 使坐标轴刻度表签正常显示正负号
lianjia = pd.read_csv(r'C:\Users\86173\Desktop\lianjia.csv',encoding='utf-8-sig')

#更改列名
lianjia = lianjia.rename(columns={'name':'名字','price':'总价','area_price':'单价','area':'面积','position':'位置','room_type':'房型'})

#创建关于位置的柱状图
lianjia_position = lianjia['位置']
x = lianjia_position.index
y = lianjia_position.values

plt.figure(figsize=(10,5)) #定义画布大小
plt.bar(x,y,color = 'g')

plt.title('爬取的前20个数据的位置分析柱状图',fontsize = 20) #定义图片标题,字体大小为20
plt.xlabel('位置',fontsize = 18) #定义x轴标题,字体大小为18
plt.ylabel('数量',fontsize = 18) #定义y轴标题,字体大小为18

plt.tick_params(labelsize = 14) #设置坐标轴字体大小
plt.xticks(rotation = 90) #将x轴旋转90度显示

#显示网格线
plt.grid()

#用text显示数值
for a,b in zip(x,y):
      plt.text(a,b + str(50),'%.0f' %b,ha = 'center',va = 'bottom',fontsize = 10)















plt.tight_layout()
plt.show()

樊敬礼 发表于 2021-1-18 16:31:35

suchocolate 发表于 2021-1-18 16:12
数字和字符串不能用+拼接,把50变成字符串再拼接。

plt.text(a,b + str(50),'%.0f' %b,ha = 'center',va = 'bottom',fontsize = 10)老哥是这样吗?

suchocolate 发表于 2021-1-18 18:10:23

樊敬礼 发表于 2021-1-18 16:31
plt.text(a,b + str(50),'%.0f' %b,ha = 'center',va = 'bottom',fontsize = 10)老哥是这样吗?

对,不过不用str,plt.text(a, b + '50', '%.0f' % b, ha='center', va='bottom', fontsize= 10)直接这样:
页: [1]
查看完整版本: matplotlib.pyplot 柱形图报错