# -*-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()
matplotlib绘制横向柱状图,为什么柱状图显示在连接处,明明5个数据有6个柱状(语言-python)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 - 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7495612
- 你也可以参考下这篇文章:matplotlib图片/子图标题置于底部 设置坐标轴位置 python
- 除此之外, 这篇博客: matplotlib绘制出现坐标轴中文乱码的情况怎么处理?中的 用python绘制数据出现中文乱码的情况怎么处理? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
通常我们绘制含有中文的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()
- 您还可以看一下 白勇老师的玩转Matplotlib数据绘图库课程中的 设置线形风格小节, 巩固相关知识点
- 以下回答由chatgpt基于相关博客总结生成:
根据参考资料和知识,解决问题的步骤如下:
-
首先,我们需要确认是否在使用
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()
如果以上解决方案不能解决问题,请确认是否存在其他代码或数据与之交互,或者提供更多细节和代码以便更好地帮助你解决问题。
-
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥30 为什么会失败呢,该如何调整
- ¥50 如何在不能联网影子模式下的电脑解决usb锁
- ¥20 服务器redhat5.8网络问题
- ¥15 如何利用c++ MFC绘制复杂网络多层图
- ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
- ¥15 python螺旋图像
- ¥15 算能的sail库的运用
- ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
- ¥15 找代写python里的jango设计在线书店
- ¥15 请教如何关于Msg文件解析