Python可视化常用方法和常见问题解决方案

传送门:

柱状图详细绘制解答
matplotlib绘图函数常用参数指南
绘图时坐标轴标签重叠解决办法
设置图形字体大小
雷达图
绘图常用颜色
好看的饼状图

matplotlib.rcParams['axes.unicode_minus'] = False # 正常显示负号
plt.rcParams["font.sans-serif"] = "SimHei" # 设置图片中的字体为中文黑体

横轴坐标值显示方向调整

python中用matplotlib画图时,横坐标标签是默认横着显示的

在这里插入图片描述

这个图里面显示的横轴坐标值是竖着的,看起来不太美观,把它改成横向的,只需要添加下面一句代码

rotation默认是90,即为横着显示,改成360即可正常竖直显示

plt.xticks(rotation=360)

使用DataFrame类型直接绘图

数据集来自2019年美国大学生数学建模C题第一问。
这是是要绘制出U-47700这个物质在每个州的数量分布情况

    sum_u =  pd.DataFrame({'U-47700':data[data['SubstanceName'] == 'U-47700'].groupby('FIPS_State')['DrugReports'].sum()})
    sum_u.plot.pie(subplots=True) # 绘制饼状图
    sum_u.plot(kind='bar') # 绘制柱状图
    sum_u.plot(kind='line') # 绘制线形图

结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来是绘制多个类别的物质随年度变化的图

 sum_year_stat = pd.DataFrame({
    'Morphine':data[data['SubstanceName'] == 'Morphine'].groupby('YYYY')['DrugReports'].sum(),
    'Methadone':data[data['SubstanceName'] == 'Methadone'].groupby('YYYY')['DrugReports'].sum(),
    'Hydromorphone':data[data['SubstanceName'] == 'Hydromorphone'].groupby('YYYY')['DrugReports'].sum(),
    'Oxymorphone':data[data['SubstanceName'] == 'Oxymorphone'].groupby('YYYY')['DrugReports'].sum(),
    })# 根据年份来进行分组,然后将对应物质的数量求和。
    sum_year_stat.plot(kind = 'bar') # 绘制饼状图
    plt.xlabel('Year') # 设置横坐标轴标签
    plt.ylabel('Sum')
    plt.xticks(rotation=360) # 设置横坐标值水平显示

在这里插入图片描述

matplotlib

官方文档
在这里插入图片描述

pyplot子库

简写为plt
figure对象(可以理解为画布)
在这里插入图片描述
在这里插入图片描述

常用颜色
在这里插入图片描述
粉色:‘pink’
亮粉色:‘lightpink’
亮蓝色:‘lightblue’

plt.figure(figsize=(6, 6))
plt.pie(sexc, labels=['男性', '女性'],colors=['lightblue','lightpink'], autopct='%1.1f%%')
plt.title("会员性别比例饼状图", fontsize=15)
plt.legend()

在这里插入图片描述

figure对象——划分子图
在这里插入图片描述
当三个参数都小于10时,可以省略逗号,用一个三位数表示三个参数,
例如subplot(2,2,1)等价于subplot(221)

matplolib绘制的图形中默认为英文字体,所以一般中文字体无法显示,只需要把字体改为中文字体即可。

  • 设置中文字体
    在这里插入图片描述
    其他常用中文字体
    在这里插入图片描述

恢复标准默认配置
在这里插入图片描述
添加全局标题

subtitle('标题')

subtitle的参数及其可取值
在这里插入图片描述

添加子图标题

title('标题')

title函数的主要参数
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

散点图 scatter()

在这里插入图片描述
在这里插入图片描述
数据点样式
在这里插入图片描述

  • text()函数:在指定位置显示文字
    在这里插入图片描述
    在这里插入图片描述

坐标轴设置
在这里插入图片描述
显示图例
在这里插入图片描述
在这里插入图片描述

折线图
  • plot()函数
    在这里插入图片描述
    在这里插入图片描述
柱状图

在这里插入图片描述
绘制柱状图,并在图中柱子上显示数字

plt.figure(figsize=(7, 6))
plt.bar(x=sum_year.index, height=sum_year.values)
# 完整的显示坐标轴,避免间隔显示
x = np.arange(2004,2014,1)
plt.xticks(x)
#在柱状图上面显示数字
for x, y in enumerate(sum_year.values):
    plt.text(2004+x, y+100, '%s' % y, ha='center', va='bottom')
# 设置柱状图标题
plt.title("每一年加入会员人数柱状图")
# 设定X,Y轴标签
plt.xlabel("年份")
plt.ylabel("人数")

plt.show()

注意这里x轴坐标是从2004开始,所以在添加数字时,x需要+2004。而y+100是为了在柱子上方一点,避免和柱子重合。

效果图:
在这里插入图片描述

keras

keras是一个由Python编写的高层的神经网络和深度学习库。Tensorflow的官方API。

Keras集成的数据集
在这里插入图片描述
波士顿房价数据集绘制平均房间数和房价的散点图
在这里插入图片描述

13种特征和房价的散点图
在这里插入图片描述

色彩映射

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

鸢尾花数据分类可视化
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
import pandas as pd


#加载数据
TRAIN_URL = "http://download.tensorflow.org/data/iris_training.csv"
train_path = tf.keras.utils.get_file(TRAIN_URL.split('/')[-1],TRAIN_URL)

COLUMN_NAMES=['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth', 'Species']
df_iris = pd.read_csv(train_path, names=COLUMN_NAMES, header=0)

iris = np.array(df_iris)

plt.scatter(iris[:,2], iris[:,3], c=iris[:, 4], cmap='brg')
plt.title("Anderson's Iris Data Set\n (Blue->Setosa | Red->Versicolor | Green->Virginica)")
plt.xlabel(COLUMN_NAMES[2])
plt.ylabel(COLUMN_NAMES[3])
plt.show()

在这里插入图片描述

绘制多个子图

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
import pandas as pd

# 加载数据
TRAIN_URL = "http://download.tensorflow.org/data/iris_training.csv"
train_path = tf.keras.utils.get_file(TRAIN_URL.split('/')[-1], TRAIN_URL)

COLUMN_NAMES = ['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth', 'Species']
df_iris = pd.read_csv(train_path, names=COLUMN_NAMES, header=0)

iris = np.array(df_iris)
# 绘制画布尺寸和整个画布标题
fig = plt.figure('Iris Data', figsize=(15, 15))
# 添加子图总标题
fig.suptitle("Anderson's Iris Data Set\n(Blue->Setosa | Red->Versicolor | Green->Virginica)")

# 循环绘制子图
for i in range(4):
    for j in range(4):
        plt.subplot(4, 4, 4 * i + (j + 1))  # 创建子图
        if (i == j):  # 横纵坐标相同,输出当前属性名称
            plt.text(0.3, 0.5, COLUMN_NAMES[i], fontsize=15)
        else:
            plt.scatter(iris[:, j], iris[:, i], c=iris[:, 4], cmap='brg') # 绘制散点图
        if(i==0):  # 输出横坐标名称
            plt.title(COLUMN_NAMES[j])
        if(j==0):  # 输出纵坐标名称
            plt.ylabel(COLUMN_NAMES[i])

# 调整子图间距
plt.tight_layout(rect=[0, 0, 1, 0.93])
plt.show()

在这里插入图片描述

使用matplotlib绘图时,负数的符号显示不正常,添加下面的语句。

import matplotlib
 matplotlib.rcParams['axes.unicode_minus']=False

参考文献

# 设定画图板尺寸
plt.figure(figsize=(12,16))
# 建立一个循环,输出图片
for i,data in enumerate(xtest[:100]):
#     设定子图,将每个子图输出到对应的位置
    plt.subplot(10,10,i+1)
#     输出图片,取出来的数据是必须处理好再输出的,此例为8*8
    plt.imshow(data.reshape(8,8))
#     测试的标题和真实的标题打印出来
    plt.title('C:'+str(y_[i])+'\nT:'+str(ytrue[:100][i]),size=20)
#     关掉x y轴的刻度
    plt.axis('off')
#     调整每隔子图之间的距离
    plt.tight_layout()
图像透明度alpha参数和自动调整坐标间距
plt.figure(figsize=(10, 5))
sns.barplot(x=list(drink["id"]), y=list(drink["Goods"]))
plt.title("非酒精饮料类别中不同商品的销量", fontsize= 15)
plt.xlabel("商品销量")
plt.ylabel("商品类别")

效果图
在这里插入图片描述

修改透明度,并设置自动调整间距

plt.figure(figsize=(10, 5))
sns.barplot(x=list(drink["id"]), y=list(drink["Goods"]),alpha=0.4) # 设置透明度alpha=0.4
plt.title("非酒精饮料类别中不同商品的销量", fontsize= 15)
plt.xlabel("商品销量")
plt.ylabel("商品类别")
# plt.xticks(fontsize=5)  #设定x坐标标签字体大小
# plt.yticks(fontsize=7)  #设定y坐标标签字体大小
plt.tight_layout() # 自动调整坐标轴标签间距。

效果图:
在这里插入图片描述

改变透明度alpha之后,色彩更淡跟好看一些,自动调整间距,可以显示完全坐标轴。

自动美化

# 设置风格
plt.style.use('ggplot') # 自动美化图形
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
您好!对于Python爬虫数据可视化中最后一步无法生成图像的问题,可能有几个原因导致。以下是一些常见的解决方法: 1. 确保使用了正确的可视化库:在Python中,常用数据可视化库有Matplotlib、Seaborn、Plotly等。请确保您选择了适合您的需求的库,并正确地安装和导入它们。 2. 检查数据是否正确:确保您的数据集正确无误,包括数据类型、格式和数据内容。有时候,数据集中可能存在错误或缺失值,这可能导致无法生成图像。 3. 确保代码逻辑正确:检查您的代码逻辑是否正确,比如是否正确选择了绘制图表的函数、是否正确指定了图表的参数等。可以仔细检查代码中的语法错误和逻辑错误。 4. 检查图像是否被隐藏或不可见:有时候,生成的图像可能被隐藏或不可见。请确保您在生成图像的代码后面添加了显示图像的代码,比如使用Matplotlib库中的`plt.show()`函数。 5. 调整图像大小和布局:有时候,生成的图像可能因为默认大小或布局问题而无法显示。您可以尝试调整图像的大小、比例或布局,以适应您的需求。 6. 检查是否缺少依赖库:有些可视化库可能依赖其他的库或软件包。请确保您已正确安装了这些依赖库,并且版本与可视化库要求的版本兼容。 如果您能提供更具体的代码和错误信息,我将能够更好地帮助您解决问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值