php 元饼图 直方图,matplotlib之直方图、饼图、散点图

本文详细介绍了使用Python的matplotlib库绘制各种图表的方法,包括直方图的bins、normed等参数设置,饼图的exploded和startangle属性,散点图的分布展示,以及火柴杆图的创建。此外,还展示了如何在图表中添加表格,调整颜色、线条样式等细节,以实现更丰富的数据可视化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、直方图plt.hist()

调用matplotlib.pyplot.hist()方法来创建,关键字参数如下:

bins:可以是一个bin数量的整数值,也可以是表示bin的一个序列,默认是10

range:bin的范围,当bins参数为序列时,此参数无效,范围外的值将被忽略,默认值为None

normed:如果值为True,直方图的值将进行归一化处理,形成概率密度,默认为False

histtype:默认为bar类型的直方图

barstacked:用于多种数据的堆叠直方图

step:创建未填充的线性图

stepfilled:创建默认填充的线形图

align:用于bin边界之间矩形条的居中设置。默认为mid,可选right,left

color:指定直方图的颜色,可以是单一颜色值或颜色的序列,如果指定了多个数据集合,颜色序列将会设置为相同的顺序,如果未指定,将会使用一个默认的线条颜色

orientation:通过设置该参数为horizontal创建水平直方图,默认值为vertical

x = np.random.normal(100, 15, 1000)

ax = plt.gca()

ax.hist(x, bins=30, color='r')

ax.set_xlabel('Values')

ax.set_ylabel('Frequency')

plt.show()

29c56ce71b3877ce027e630440b6ff2b.png

二、饼图plt.pie()

调用plt.pie()方法绘制分裂式饼图(exploder pie chart),关键字exploded,其中每一个元素表示每个圆弧间的偏移量,具体为半径的百分比;startangle默认为0,扇区将从x轴(角度0)开始逆时针排列,如果指定为90,则从y轴开始。

ax = plt.axes([0.1, 0.1, 0.8, 0.8])

labels =['Spring', 'Summer', 'Autumn', 'Winter']

x =[12, 30, 45, 10]

explode = (0.2, 0.05, 0.05, 0.05)

plt.pie(x, explode=explode, labels=labels, autopct='%1.1f%%', startangle=30)

plt.title('Rainy days by season')

plt.show()

fe5594d4c265873f86988d1eac0542c3.png

三、散点图plt.scatter()

x = np.random.randn(1000)

y1 = np.random.randn(1000)

y2 = 1.2 + np.exp(x)

ax1 = plt.subplot(121)

plt.scatter(x, y1, color='indigo', alpha=0.3, label='no correl')

plt.xlabel('no corrlation')

plt.grid(True)plt.legend()

ax2 = plt.subplot(122, sharey=ax1, sharex=ax1)

plt.scatter(x, y2, color='green', alpha=0.3, label='correl')

plt.xlabel('strong corrlation')

plt.grid(True)

plt.legend()

plt.show()

f11e95db4db9e31ab941f419748728ad.png

四、绘制火柴杆图

调用matplotlib.stem会返回3个对象,第一个是markerline,它是一个Line2D的实例,保存了表示火柴杆本身的线条的引用。它仅仅渲染了标记,不包括连接标记的线条,可以通过编辑该Line2D实例的属性让线条可见;第二个对象是stemlines,表示茎线的Line2D实例的集合(list对象);第三个对象是baselines,保存了表示stemlines原点的水平线条的引用。

x = np.linspace(-np.pi, np.pi, 50)

y = np.sin(x)

markerline, stemlines, baseline = plt.stem(x, y, bottom=0, label='delta')

plt.setp(markerline, color='red', marker='o')

plt.setp(stemlines, color='blue', linestyle=':')

plt.setp(baseline, color='grey', linewidth=2, linestyle='-')

plt.legend()

plt.show()

6ef211762f090ac979339f434380a751.png

五、向表中添加数据表

使用plt.table()方式创建一个带单元格的表格,并把它添加到当前坐标轴中。函数实例化并返回一个matplotlib.table.Table实例

y = np.random.randn(9)

plt.figure()

col_labels = ['col1', 'col2', 'col3']

row_labels = ['row1', 'row2', 'row3']

table_vals = [[1,2,3], [4,5,6], [7,8,9]]

row_colors = ['red', 'gold', 'green']

my_table = plt.table(cellText=table_vals, colWidths=[0.1, 0.1, 0.1], rowLabels=row_labels, colLabels=col_labels, rowColours=row_colors, loc='upper right')

plt.plot(y)

plt.show()

93cb8ff9806cb45338ec50ed895a1d1b.png

原文链接:https://blog.youkuaiyun.com/stefanjoe/article/details/112101548

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值