Python如何绘制多变量的散点图

如题,有多个变量的数据,想要在一张图上看它们各自的分布情况,有大佬可以指导一下应该怎么做吗?

我的数据结构是这样的,不同组织的不同基因都有一个score。

 

GeneID                               Adrenal.gland    Cerebellum     Brain      Fetal.brain Fetal.liver

ENSG00000000419   

ENSG00000000457

ENSG00000000460

ENSG00000000938    

ENSG00000000971    

数值型,浮点型做散点图都可以, 给你提供几段代码, 分别是用matplotlib、seaborn和pandas-bokeh作图,  你参考下, 看哪个和你的数据结构相似,  你可以修改下:

如果是一下子出很多图(多子图的显示), 需要进一步修改.

matplotlib

import numpy as np
import pandas as pd
import faker  # 生成模拟数据
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')  # 不提示警告

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
f = faker.Faker(locale='zh-CN')

# 创建数据
data = pd.DataFrame()
for i in range(500):
    datai = pd.DataFrame({'姓名':f.name(),
                          '销售数量':f.random_int(),
                          '金额':f.random_int(),
                          '利润':f.random_int(),},
                         index=[i])      # 必须有
    data = data.append(datai)
data.head()

#方法一
plt.scatter(x=data['销售数量'][:200],y=data['金额'][:200],s=data['利润'][:200]/100,c='red',alpha=0.5)
plt.scatter(x=data['销售数量'][200:],y=data['金额'][200:],s=data['利润'][200:]/100,c='blue',alpha=0.5)
plt.xlabel('销售数量')
plt.ylabel('销售金额')

方法二:
data.plot.scatter(x='销售数量',y='金额',c='利润')

seaborn

import seaborn as sns
sns.set()

# 读取数据
planets = pd.read_csv('C:/Users/yyz/Desktop/python数据分析基础/data/seaborn-data-master/planets.csv')
planets.head()

# 创建图表
sns.scatterplot(x="distance", # x轴
                y="orbital_period",# y轴
                hue="year",   # 颜色分类
                size="mass",   # 大小分类
                palette='Spectral_r', # 调色盘
                sizes=(10, 200),      # 大小区间
                data=planets)

pandas-bokeh

# 导入工具包
import pandas_bokeh
import numpy as np
import pandas as pd

# 作图数据
df = pd.read_csv('C:/Users/yyz/Desktop/pandas-bokeh/data/iris.csv')
df.columns = ['花萼长度','花萼宽度','花瓣长度','花瓣宽度','物种']
df['物种'].replace(['setosa','versicolor','virginica'],['山鸢尾','杂色鸢尾','维吉尼亚鸢尾'],inplace=True)
df.head()

# 修改其中的一个数值,为了查看散点大小
df.loc[13, "花萼长度"] = 15

#散点图
p_scatter = df.plot_bokeh.scatter(
    x="花瓣长度",
    y="花萼宽度",
    size="花萼长度",# 大小
    category="物种",  # 作为分类的字段列
    title="鸢尾花卉数据集可视化")  

 

最好是能提供下数据的部分, 知道数据都是什么格式的(数值还是字符串)

python中可以作图的工具包很多 . 静态的: matplotlib, seaborn, 动态的: pandas-bokeh, pyechart等

散点图不难, 重点看数据

供参考: 

https://www.bilibili.com/video/BV1DV411Y7nQ/

https://www.bilibili.com/video/BV1Hf4y1t73D/