matplotlib可视化初体验

本文通过实例介绍了使用Matplotlib进行各种图表绘制的方法,包括圆形散点图、点图与线图、直方图、三维图像、三维曲面图、条形图、饼图和气泡图。每种图表都附有详细的代码示例。

这篇博客主要是总结一下最近进行的matplotlib可视化实验,内容主要来自于官方文档的实例。

(1)首先最简单的——圆形散点图:

import matplotlib.pyplot as plt
import numpy as np
#绘制一个圆形散点图
t = np.arange(1, 10, 0.05)
x = np.sin(t)
y = np.cos(t)
#定义一个图像窗口
plt.figure(figsize=(8,5))
#绘制一条线
plt.plot(x, y, "r-*")
#使得坐标轴相等
plt.axis("equal")
plt.xlabel("sin")
plt.ylabel("cos")
plt.title("circle")
#显示图形
plt.show()

 

(2)点图与线图——并且用subplot()绘制多个子图:

"""Matplotlib绘图之点图与线图
并且使用subplot()绘制多个子图
"""
import numpy as np
import matplotlib.pyplot as plt
#生成x
x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)
#生成y
y1 = np.cos(2*np.pi*x1) * np.exp(-x1)
y2 = np.cos(2*np.pi*x2)
#绘制第一个子图
plt.subplot(2, 1, 1)
plt.plot(x1, y1, 'yo-')
plt.title('A tale of 2 subplots')
plt.ylabel('Damped oscillation')
#绘制第二个子图
plt.subplot(2,1,2)
plt.plot(x2, y2, 'r.-')
plt.xlabel('time (s)')
plt.ylabel('Undamped')
plt.show()

 

 (3)直方图:

"""绘制直方图"""
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

#样例数据
mu = 100
sigma = 15
x = mu + sigma * np.random.randn(10000)
print("x:", x.shape)
#直方图的条数
num_bins = 50
#绘制直方图
n, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)
#添加一个最佳拟合曲线
y = mlab.normpdf(bins, mu, sigma)#返回关于数据的pdf值——概率密度函数
plt.plot(bins, y, 'r--')
plt.xlabel('Smarts')
plt.ylabel('Probability')
#在图中添加公式需要使用LaTeX的语法
plt.title('Histogram of IQ: $\mu=100$, $\sigma=15$')
#调整图像的间距,防止y轴数值与label重合
plt.subplots_adjust(left=0.15)
plt.show()

 (4)绘制三维图像:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm

n_angles = 36
n_radii = 8
# An array of radii
# Does not include radius r=0, this is to eliminate duplicate points
radii = np.linspace(0.125, 1.0, n_radii)
# An array of angles
angles = np.linspace(0, 2 * np.pi, n_angles, endpoint=False)
# Repeat all angles for each radius
angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)
# Convert polar (radii, angles) coords to cartesian (x, y) coords
# (0, 0) is added here. There are no duplicate points in the (x, y) plane
x = np.append(0, (radii * np.cos(angles)).flatten())
y = np.append(0, (radii * np.sin(angles)).flatten())
# Pringle surface
z = np.sin(-x * y)
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.2)
plt.show()

 

(5) 三维曲面图以及各个轴的投影等高线:

"""三维曲面图
三维图像and各个轴的投影等高线"""
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import cm

fig = plt.figure(figsize=(8, 6))
ax = fig.gca(projection='3d')
#生成三维测试数据
X, Y, Z = axes3d.get_test_data(0.05)
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contour(X, Y, Z, zdir='z',offset=-100, cmap=cm.coolwarm)
cset = ax.contour(X, Y, Z, zdir='x',offset=-40, cmap=cm.coolwarm)
cset = ax.contour(X, Y, Z, zdir='y',offset=40, cmap=cm.coolwarm)
ax.set_xlabel('X')
ax.set_xlim(-40, 40)
ax.set_ylabel('Y')
ax.set_ylim(-40, 40)
ax.set_zlabel('Z')
ax.set_zlim(-100, 100)
plt.show()

 (6)条形图:

"""条形图"""
import numpy as np
import matplotlib.pyplot as plt
#生成数据
n_groups = 5#组数
#平均分和标准差
means_men = (20, 35, 30, 35, 27)
std_men = (2, 3, 4, 1, 2)

means_women = (25, 32,34,20,25)
std_women = (3, 5, 2, 3, 3)

#条形图
fig, ax = plt.subplots()

index = np.arange(n_groups)
bar_width = 0.35#条形图宽度

opacity = 0.4
error_config = {'ecolor': '0.3'}
#条形图的第一类条
rects1 = plt.bar(index, means_men, bar_width,
                 alpha=opacity,
                 color='b',
                 yerr=std_men,
                 error_kw=error_config,
                 label='Men')
#条形图中的第二类条
rects2 = plt.bar(index + bar_width,
                 means_women,
                 bar_width,
                 alpha=opacity,
                 color='r',
                 yerr=std_women,
                 error_kw=error_config,
                 label='Women')
plt.xlabel('Group')
plt.ylabel('Scores')
plt.title('Scores by group and gender')
plt.xticks(index + bar_width, ('A', 'B', 'C', 'D', 'E'))
plt.legend()
#自动调整subplot的参数指定的填充区
plt.tight_layout()
plt.show()

(7)饼图:

"""绘制饼图"""
import matplotlib.pyplot as plt
#切片将按照顺时针方向排列并绘制
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'#标注
sizes = [15,30,45,10]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']#颜色
explode = (0, 0.1, 0, 0)#这里的0.1是指第二个块从圆里面分割出来
plt.pie(sizes,
        explode=explode,
        labels=labels,
        colors=colors,
        autopct='%1.1f%%',
        shadow=True,
        startangle=90)
plt.axis('equal')
plt.show()

(8)气泡图:

"""气泡图"""
import matplotlib.pyplot as plt
import pandas as pd

#导入数据
df_data = pd.read_csv('https://raw.github.com/pydata/pandas/master/pandas/tests/data/iris.csv')
df_data.head()
#作图
fig, ax = plt.subplots()
#可以自行设置气泡颜色
# colors = ['#99cc01'......]
#创建气泡图SepalLength为x,SepalWidth为y,设置PetalLength为气泡大小
ax.scatter(df_data['SepalLength'],
           df_data['SepalWidth'],
           s=df_data['PetalLength'] * 100,
           alpha=0.6)
ax.set_xlabel('SepalLength(cm)')
ax.set_ylabel('SepalWidth(cm)')
ax.set_title('PetalLength(cm) * 100')

#显示网格
ax.grid(True)

fig.tight_layout()
plt.show()

 

 

### Pandas 数据可视化入门教程 Pandas 是 Python 中强大的数据分析工具之一,其内置的数据结构支持多种绘图功能。通过与 Matplotlib 和 Seaborn 的无缝集成[^2],可以轻松实现高质量的数据可视化。 #### 基础概念 在数据科学项目中,Pandas 提供了 DataFrame 对象作为主要操作单元。DataFrame 可以直接调用 `.plot()` 方法来生成基本图表。以下是几个常见的图表类型: 1. **折线图 (Line Plot)** 折线图适用于展示时间序列或其他连续变量的变化趋势。 ```python import pandas as pd df = pd.DataFrame({ "年份": [2015, 2016, 2017, 2018], "销售额": [100, 150, 200, 250] }) df.plot.line(x="年份", y="销售额", title="年度销售变化") ``` 2. **柱状图 (Bar Chart)** 柱状图常用于比较不同类别的数量大小。 ```python df.plot.bar(x="年份", y="销售额", rot=0, color="skyblue", title="各年度销售额对比") ``` 3. **直方图 (Histogram)** 直方图用来显示数值型数据的分布情况。 ```python df["销售额"].plot.hist(bins=5, rwidth=0.9, color="orange", title="销售额分布") ``` 4. **散点图 (Scatter Plot)** 散点图可用于探索两个变量之间的关系。 ```python df_scatter = pd.DataFrame({ "身高": [140, 150, 160], "体重": [50, 52, 55] }) df_scatter.plot.scatter(x="身高", y="体重", c="red", s=50, title="身高 vs 体重") ``` #### 高级功能:结合 Seaborn 进行复杂可视化 对于更复杂的场景,推荐使用 Seaborn 库。Seaborn 构建于 Matplotlib 之上,并提供了更高层次的接口[^4]。例如,可以通过 `sns.pairplot` 绘制多维数据的相关性矩阵。 ```python import seaborn as sns import matplotlib.pyplot as plt data = { 'Category': ['A', 'B', 'C', 'D'], 'Values': [5, 7, 8, 4] } df_sea = pd.DataFrame(data) plt.figure(figsize=(6, 4)) sns.barplot(x='Category', y='Values', data=df_sea, palette="Blues_d") plt.title("类别值对比") plt.show() ``` #### 实践建议 为了更好地掌握 Pandas 数据可视化技能,在头歌平台上可以从以下几个方面入手: - 学习基础语法并熟悉常用参数设置[^3]。 - 尝试加载真实世界的小规模数据集进行练习。 - 探索更多高级特性,比如子图布局 (`subplot`) 或者自定义样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值