# -*-coding:gb2312-*-
import matplotlib.pyplot as plt
import numpy as np
# 中文乱码问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
# 设置画布大小
plt.figure(figsize = (15,6),dpi = 60)
size=5
x = np.arange(size)
y1 = np.array([12,16,40,22,3])
y2 = np.array([8,16,40,21,11])
labels = np.array(["北京","上海","广州","深圳","杭州"])
plt.subplot(1,2,1)
plt.barh(x, y1, tick_label=labels, height=2, color='yellow')
for a,b in zip(y1, x):
plt.text(a, b, b, ha='center')
# 标题
plt.title("套装一在热销城市的销量", fontsize=18)
plt.xlabel("销量", fontsize=10)
plt.ylabel('城市', fontsize=10)
plt.subplot(1,2,2)
plt.barh(x, y2, tick_label=labels, height=2, color='green')
plt.title("套装二在热销城市的销量", fontsize=18)
plt.xlabel("销量", fontsize=10)
for a,b in zip(y2, x):
plt.text(a, b, b, ha='center')
plt.show()
通常我们绘制含有中文的exce数据l 就会出现乱码的情况,要将乱码的中文复现,只需要输入如下代码:
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
以上图为例,我们看一下结果:
import xlrd
import matplotlib.pyplot as plt
#调节字体
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
shouyi= ["133", "111", "1145"]
zhichu = ["13", "56", "66"]
data = ["7月10日", "7月11日", "7月12日"]
fig, ax = plt.subplots()
ax.plot(data, shouyi, label="收益")
ax.plot(data, zhichu, label="支出")
ax.legend()
plt.show()
根据参考资料和知识,解决问题的步骤如下:
首先,我们需要确认是否在使用 plt.plot
函数绘制柱状图时出现了问题。如果是的话,我们可以尝试使用 plt.bar
函数来绘制柱状图,该函数专门用于绘制柱状图。
如果问题不在于使用的函数,而是在数据上,我们需要检查数据的维度和格式,确保数据没有错误。可以使用 print
打印一下数据,观察是否符合预期。
如果数据没有问题,但仍然出现了多余的柱状图,请检查是否有多余的元素或重复的数据。可以使用 set
函数将数据转换为集合,然后再转换回列表,以去除重复的元素。
下面是一个可能的解决方案:
import matplotlib.pyplot as plt
import random
# 生成随机数据
x = range(5)
y = [random.randint(20, 35) for _ in range(5)]
# 尝试使用 plt.bar 绘制柱状图
plt.bar(x, y, color='plum')
# 设置坐标轴标签和标题
plt.xlabel('x')
plt.ylabel('y')
plt.title('柱状图')
# 显示图例
plt.legend(['柱状图'])
# 显示网格线
plt.grid(alpha=0.1)
# 显示图形
plt.show()
如果以上解决方案不能解决问题,请确认是否存在其他代码或数据与之交互,或者提供更多细节和代码以便更好地帮助你解决问题。
python调试三板斧 https://ask.csdn.net/questions/7908322/54130133