脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - python实现各种可视化图形(散点图/折线图/组合图)

python实现各种可视化图形(散点图/折线图/组合图)

2023-10-23 16:36青枫浦上看桃花 Python

本文主要为大家介绍下在python开发中绘制各种可视化图形的方法,包括:散点图、折线图及组合图,有需要的朋友可以参考下

一、实现随机散点图

1.1实现代码
import matplotlib.pyplot as plt
import numpy as np
#import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei']
# Matplotlib中设置字体-黑体,解决Matplotlib中文乱码问题
plt.rcParams['axes.unicode_minus'] = False
# 解决Matplotlib坐标轴负号'-'显示为方块的问题
#sns.set(font='SimHei')
# Seaborn中设置字体-黑体,解决Seaborn中文乱码问题
# 随机数生成器的种子
np.random.seed(19680801)


N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2  # 0 to 15 point radii

plt.scatter(x, y, s=area, c=colors, alpha=0.5) # 设置颜色及透明度

plt.title("RUNOOB Scatter Test") # 设置标题

plt.show()
1.2结果展示

python实现各种可视化图形(散点图/折线图/组合图)

 1.3散点图加标题和坐标标签
import matplotlib.pyplot as plt
import numpy as np
#import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei']
# Matplotlib中设置字体-黑体,解决Matplotlib中文乱码问题
plt.rcParams['axes.unicode_minus'] = False
# 解决Matplotlib坐标轴负号'-'显示为方块的问题
#sns.set(font='SimHei')
# Seaborn中设置字体-黑体,解决Seaborn中文乱码问题

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
sizes = np.array([20,50,100,200,500,1000,60,90])
colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])

plt.title("散点图", size=20,c='g')
# fontproperties 设置中文显示,fontsize 设置字体大小
plt.xlabel("x 轴",fontsize=20,c='r',loc="right" )
plt.ylabel("y 轴" ,fontsize=20,c='r',loc="top")
plt.scatter(x, y,s=sizes,c=colors,marker='*')
plt.show()
1.4结果展示

python实现各种可视化图形(散点图/折线图/组合图)

1.5 API
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None,
cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *,
edgecolors=None, plotnonfinite=False, data=None, **kwargs)
参数说明:

x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。

s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。

c:点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。

marker:点的样式,默认小圆圈 'o'。

cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。

norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。

vmin,vmax::亮度设置,在 norm 参数存在时会忽略。

alpha::透明度设置,0-1 之间,默认 None,即不透明。

linewidths::标记点的长度。

edgecolors::颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。

plotnonfinite::布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。

**kwargs::其他参数。

二、实现柱状图

1.1实现代码
import matplotlib.pyplot as plt

#import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei']
# Matplotlib中设置字体-黑体,解决Matplotlib中文乱码问题
plt.rcParams['axes.unicode_minus'] = False
# 解决Matplotlib坐标轴负号'-'显示为方块的问题
#sns.set(font='SimHei')
# Seaborn中设置字体-黑体,解决Seaborn中文乱码问题
import matplotlib.pyplot as plt
import numpy as np

x = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])

plt.bar(x,y,color='r')
plt.show()
 1.2结果展示

python实现各种可视化图形(散点图/折线图/组合图)

1.3实现条形图代码
import matplotlib.pyplot as plt
import numpy as np
#import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei']
# Matplotlib中设置字体-黑体,解决Matplotlib中文乱码问题
plt.rcParams['axes.unicode_minus'] = False
# 解决Matplotlib坐标轴负号'-'显示为方块的问题
#sns.set(font='SimHei')
# Seaborn中设置字体-黑体,解决Seaborn中文乱码问题

x = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])

plt.barh(x,y)
plt.show()
1.4结果展示

python实现各种可视化图形(散点图/折线图/组合图)

三、实现直方图

1.1实现的代码
import matplotlib.pyplot as plt
import numpy as np

# 生成一组随机数据
data = np.random.randn(1000)

# 绘制直方图
plt.hist(data, bins=30, color='skyblue', alpha=0.8)

# 设置图表属性
plt.title('RUNOOB hist() Test')
plt.xlabel('Value')
plt.ylabel('Frequency')

# 显示图表
plt.show()
 1.2实现的结果展示

python实现各种可视化图形(散点图/折线图/组合图)

 四、实现饼图

1.1实现代码
import matplotlib.pyplot as plt

# 数据
sizes = [15, 30, 45, 10]

# 饼图的标签
labels = ['A', 'B', 'C', 'D']

# 饼图的颜色
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']

# 突出显示第二个扇形
explode = (0, 0.1, 0, 0)

# 绘制饼图
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
        autopct='%1.1f%%', shadow=True, startangle=90)

# 标题
plt.title("RUNOOB Pie Test")

# 显示图形
plt.show()
1.2实现结果

python实现各种可视化图形(散点图/折线图/组合图)

 1.3实现API参考
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)[source]
参数说明:

x:浮点型数组或列表,用于绘制饼图的数据,表示每个扇形的面积。

explode:数组,表示各个扇形之间的间隔,默认值为0。

labels:列表,各个扇形的标签,默认值为 None。

colors:数组,表示各个扇形的颜色,默认值为 None。

autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。

labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。

pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。

shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。

radius::设置饼图的半径,默认为 1。

startangle::用于指定饼图的起始角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。

counterclock:布尔值,用于指定是否逆时针绘制扇形,默认为 True,即逆时针绘制,False 为顺时针。

wedgeprops :字典类型,默认值 None。用于指定扇形的属性,比如边框线颜色、边框线宽度等。例如:wedgeprops={'linewidth':5} 设置 wedge 线宽为5。
textprops :字典类型,用于指定文本标签的属性,比如字体大小、字体颜色等,默认值为 None。
center :浮点类型的列表,用于指定饼图的中心位置,默认值:(0,0)。
frame :布尔类型,用于指定是否绘制饼图的边框,默认值:False。如果是 True,绘制带有表的轴框架。
rotatelabels :布尔类型,用于指定是否旋转文本标签,默认为 False。如果为 True,旋转每个 label 到指定的角度。
data:用于指定数据。如果设置了 data 参数,则可以直接使用数据框中的列作为 x、labels 等参数的值,无需再次传递。

除此之外,pie() 函数还可以返回三个参数:

wedges:一个包含扇形对象的列表。

texts:一个包含文本标签对象的列表。

autotexts:一个包含自动生成的文本标签对象的列表。

五、实现折线图与并列柱状图组合图

1.1实现代码
import pandas as pd
import matplotlib.pyplot as plt


def plot_combination1():
    sale = pd.read_excel('./数据/城乡收支情况.xlsx', header=0, index_col=0)
    # 设置正常显示中文标签
    plt.rcParams['font.sans-serif'] = ['SimHei']
    # 正常显示负号
    plt.rcParams['axes.unicode_minus'] = False
    # 设置字体大小
    plt.rcParams.update({'font.size': 16})

    # 提取数据
    x = sale['年份']
    y4 = sale['城镇可支配支出(元)']
    y5 = sale['农村居民可支配支出(元)']
    y6= sale['城乡居民的消费支出之比/%']


    plt.figure(figsize=(16, 8))
    plt.subplot(111)

    # 柱形宽度
    bar_width = 0.35

    # 在主坐标轴绘制柱形图
    plt.bar(x, y4, bar_width,color='r', label='城镇可支配消费(元)')
    plt.bar(x + bar_width, y5, bar_width,color='#FFFF00', label='农村居民可支配消费(元)')

    # 设置坐标轴的取值范围,避免柱子过高而与图例重叠
    plt.ylim(0, max(y4.max(), y5.max()) * 1.2)

    # 设置图例
    plt.legend(loc='upper left')
    plt.ylabel("单位:元",fontsize=20, loc="center")

    # 设置横坐标的标签
    plt.xticks(x)
    #plt.set_xticklabels(sale.index)
    plt.xlabel("年份",fontsize=20, loc="center")

    # 在次坐标轴上绘制折线图
    plt.twinx()
    # ls:线的类型,lw:宽度,o:在顶点处实心圈
    plt.plot(x, y6, ls='--', lw=2, color='c', marker='o',ms = 20, mfc = 'k', label='城乡居民消费占比')

    # 设置次坐标轴的取值范围,避免折线图波动过大
    plt.ylim(1, 2.6)

    # 设置图例
    plt.legend(loc='best')

    # 定义显示百分号的函数
    def to_percent(number, position=0):
        return '%.f' % (number) + '%'

    # 次坐标轴的标签显示百分号 FuncFormatter:自定义格式函数包
    from matplotlib.ticker import FuncFormatter
    plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))

    # 设置标题
    plt.title('\n2015年-2021年城乡居民可支配支出及城乡之间消费的占比\n', fontsize=26, loc='center', color='k')

    plt.ylabel("单位:%",fontsize=20, loc="center")
    plt.savefig('./figure1.jpg', bbox_inches='tight')

    plt.show()

if __name__ == '__main__':

    plot_combination1()
1.2实现结果

python实现各种可视化图形(散点图/折线图/组合图)

 六、柱状图与折线图组合图

1.1代码实现
#导入库
import pandas as pd
import matplotlib.pyplot as plt

def plot_combination():
    # 读取Excel文件
    data = pd.read_excel('./乡镇文化站数与从业人数.xlsx', header=0, index_col=0)
    # 提取数据
    x = data['年份']
    y1 = data['乡镇文化站数']
    y2 = data['乡镇文化站从业人员数']
    # 设置正常显示中文标签
    plt.rcParams['font.sans-serif'] = ['SimHei']
    # 正常显示负号
    plt.rcParams['axes.unicode_minus'] = False
    # 设置字体大小
    plt.rcParams.update({'font.size': 16})


    plt.figure(figsize=(16, 8))
    plt.subplot(111)

    # 柱形宽度
    bar_width = 0.35

    # 在主坐标轴绘制柱形图
    plt.bar(x, y1, bar_width,color='r', label='乡镇文化站数')
    plt.ylim(31500,35000)


    # 设置图例
    plt.legend(loc='upper left')
    plt.ylabel("单位:站",fontsize=20, loc="center")

    # 设置横坐标的标签
    plt.xticks(x)
    #plt.set_xticklabels(sale.index)
    plt.xlabel("年份",fontsize=20, loc="center")

    # 在次坐标轴上绘制折线图
    plt.twinx()
    plt.plot(x, y2, ls='--', lw=2, color='c', marker='v',ms = 10, mfc = 'k', label='站从业人员数')

    # 设置次坐标轴的取值范围,避免折线图波动过大
    plt.ylim(0,120000)

    # 设置图例
    plt.legend(loc='upper right')
    # 设置标题
    plt.title('\n乡镇文化站数与站从业人员数的情况\n', fontsize=26, loc='center', color='k')
    plt.ylabel("单位:人",fontsize=20, loc="center")

    plt.savefig('./figure1.jpg', bbox_inches='tight')

    plt.show()

if __name__ == '__main__':

    plot_combination()
1.2结果展示

python实现各种可视化图形(散点图/折线图/组合图)

到此这篇关于python实现各种可视化图形(散点图/折线图/组合图)的文章就介绍到这了,更多相关内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/qq_58546982/article/details/130974027

延伸 · 阅读

精彩推荐