Pycharm简单柱形图绘制

适用于比较多个数据

import  matplotlib.pyplot as plt
import random
import pandas as pd

#显示全部列
pd.set_option('display.max_columns', None)
#显示全部行
pd.set_option('display.max_row', None)
#设置数据的显示长度(解决自动换行)
pd.set_option('display.width', None)

# 中文乱码
plt.rcParams['font.sans-serif']=['SimHei']

# 设置画布大小
plt.figure(figsize=(10, 6))

# 设置网格线
plt.grid(axis='y', linestyle=':')

# 读表
df = pd.read_excel(r'F:\练习\可视化\产品销售情况.xlsx')
x = df['产品名称']
y = df['总量']

# 设置标签
plt.xlabel('产品名称')
plt.ylabel('销量')
plt.title('产品销售情况', fontsize=18)

# 设置文本标签
for a, b in zip(x, y):
    plt.text(a, b, format(b, ','), ha='center', va='bottom', alpha=0.9)

plt.bar(x, y, alpha=0.5, label='销售额')
# 设置图例
plt.legend()

plt.show()

柱形图语法格式:plt.bar(x, height, width, *, align='center', **kwargs)

        height一般为y值

        width为宽度,默认为0.8

        *表示后面的参数为命名参数

        align表示对齐方式,默认为center

        **kwargs表示关键字参数

若直接多个柱形图输出(如下),会直接在原来柱子上叠加

plt.bar(x, y1, alpha=0.5, label='第一季度销售额')
plt.bar(x, y2, alpha=0.5, label='第二季度销售额')
plt.bar(x, y3, alpha=0.5, label='第三季度销售额')
plt.bar(x, y4, alpha=0.5, label='第四季度销售额')

plt.show()

 因此要使y2,y3,y4在原来的基础上偏移一个width,才能实现并排显示。

        由于字符型和浮点型不能直接相加,首先需要将x转换为列表([1, 2, 3……])转换为数组

# 导入numpy库
import numpy as np
# 将x转化为数组
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
# 设置柱形宽度
bar_width=0.2
# 设置文本标签
for a, b in zip(x, y1):
    plt.text(a, b, format(b, ','), ha='center', 
va='bottom', alpha=0.9, fontsize=6)
for a, b in zip(x, y2):
    plt.text(a+bar_width, b, format(b, ','), ha='center',
va='bottom', alpha=0.9, fontsize=6)
for a, b in zip(x, y3):
    plt.text(a+2*bar_width, b, format(b, ','), ha='center',
va='bottom', alpha=0.9, fontsize=6)
for a, b in zip(x, y4):
    plt.text(a+3*bar_width, b, format(b, ','), ha='center', 
va='bottom', alpha=0.9, fontsize=6)
# 绘制图像
plt.bar(x, y1, width=0.2,alpha=0.5, label='第一季度销售额')
plt.bar(x+bar_width, y2, width=0.2, alpha=0.5, label='第二季度销售额')
plt.bar(x+2*bar_width, y3,width=0.2, alpha=0.5, label='第三季度销售额')
plt.bar(x+3*bar_width, y4,width=0.2, alpha=0.5, label='第四季度销售额')
#将x轴用产品名称代替
data = df['产品名称']
plt.xticks(x, data)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值