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

传送门:

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

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

横轴坐标值显示方向调整

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

Python可视化常用方法和常见问题解决方案_第1张图片

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

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') # 绘制线形图

结果如下:
Python可视化常用方法和常见问题解决方案_第2张图片
Python可视化常用方法和常见问题解决方案_第3张图片
Python可视化常用方法和常见问题解决方案_第4张图片
接下来是绘制多个类别的物质随年度变化的图

 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) # 设置横坐标值水平显示

Python可视化常用方法和常见问题解决方案_第5张图片

matplotlib

官方文档
Python可视化常用方法和常见问题解决方案_第6张图片

pyplot子库

简写为plt
figure对象(可以理解为画布)
在这里插入图片描述
Python可视化常用方法和常见问题解决方案_第7张图片

常用颜色
Python可视化常用方法和常见问题解决方案_第8张图片
粉色:‘pink’
亮粉色:‘lightpink’
亮蓝色:‘lightblue’

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

Python可视化常用方法和常见问题解决方案_第9张图片

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

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

  • 设置中文字体
    在这里插入图片描述
    其他常用中文字体
    Python可视化常用方法和常见问题解决方案_第10张图片

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

subtitle('标题')

subtitle的参数及其可取值
Python可视化常用方法和常见问题解决方案_第11张图片

添加子图标题

title('标题')

title函数的主要参数
Python可视化常用方法和常见问题解决方案_第12张图片

在这里插入图片描述
在这里插入图片描述
Python可视化常用方法和常见问题解决方案_第13张图片

散点图 scatter()

在这里插入图片描述
Python可视化常用方法和常见问题解决方案_第14张图片
数据点样式
Python可视化常用方法和常见问题解决方案_第15张图片

  • text()函数:在指定位置显示文字
    在这里插入图片描述
    Python可视化常用方法和常见问题解决方案_第16张图片

坐标轴设置
Python可视化常用方法和常见问题解决方案_第17张图片
显示图例
在这里插入图片描述
Python可视化常用方法和常见问题解决方案_第18张图片

折线图
  • plot()函数
    在这里插入图片描述
    Python可视化常用方法和常见问题解决方案_第19张图片
柱状图

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

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是为了在柱子上方一点,避免和柱子重合。

效果图:
Python可视化常用方法和常见问题解决方案_第20张图片

keras

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

Keras集成的数据集
Python可视化常用方法和常见问题解决方案_第21张图片
波士顿房价数据集绘制平均房间数和房价的散点图
Python可视化常用方法和常见问题解决方案_第22张图片

13种特征和房价的散点图
Python可视化常用方法和常见问题解决方案_第23张图片

色彩映射

在这里插入图片描述
在这里插入图片描述
Python可视化常用方法和常见问题解决方案_第24张图片
Python可视化常用方法和常见问题解决方案_第25张图片

鸢尾花数据分类可视化

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()

Python可视化常用方法和常见问题解决方案_第26张图片

绘制多个子图

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()

Python可视化常用方法和常见问题解决方案_第27张图片

使用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("商品类别")

效果图
Python可视化常用方法和常见问题解决方案_第28张图片

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

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() # 自动调整坐标轴标签间距。

效果图:
Python可视化常用方法和常见问题解决方案_第29张图片

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

自动美化

# 设置风格
plt.style.use('ggplot') # 自动美化图形

你可能感兴趣的:(数据挖掘与分析,可视化,python,数据可视化,数据分析)