Python:如何在一个直方图中绘制多个列
我正在学习python,而我一直坚持的是基于FLT列绘制一个直方图来指示每个过滤器。我有这个数据框:Python:如何在一个直方图中绘制多个列,python,pandas,matplotlib,histogram,Python,Pandas,Matplotlib,Histogram,我正在学习python,而我一直坚持的是基于FLT列绘制一个直方图来指示每个过滤器。我有这个数据框: VARLIST:MJD FLT FIELD FLUXCAL FLUXCALERR MAG MAGERR\ 0 OBS:55161.6克纳米-62.016 23.428纳米-0.410 1 OBS:55176.6克纳米-8.183 21.252纳米-2.820 2 OBS:55179.6克NaN 0.45119.109-4.134 46.053 3 OBS:55188.6 g NaN 511.9
VARLIST:MJD FLT FIELD FLUXCAL FLUXCALERR MAG MAGERR\
0 OBS:55161.6克纳米-62.016 23.428纳米-0.410
1 OBS:55176.6克纳米-8.183 21.252纳米-2.820
2 OBS:55179.6克NaN 0.45119.109-4.134 46.053
3 OBS:55188.6 g NaN 511.964 21.218-11.773 0.045
4 OBS:55206.6 g NaN 682.704 22.329-12.086 0.036
.. ... ... .. ... ... ... ... ...
259 OBS:56659.6 z NaN 193.577 44.434-10.717 0.249
260 OBS:56662.6 z NaN 2.728 30.422-6.089 12.109
261 OBS:56667.7 z NaN 51.009 30.915-9.269 0.658
262 OBS:56681.5 z NaN 8.945 30.450-7.379 3.696
263 OBS:56754.3 z NaN 12.488 60.586-7.741 5.268
峰值磁场zpt27.5信噪比zpt27.5磁场Rr zpt27.5
0 55206.6 23.018741 -2.647089 -0.410262
1 55206.6 25.217719 -0.385046 -2.820441
2 55206.6 28.364559 0.023601 46.014133
3 55206.6 20.726901 24.128759 0.045009
4 55206.6 20.414419 30.574768 0.035519
.. ... ... ... ...
259 55206.6 21.782866 4.356506 0.249282
260 55206.6 26.410389 0.089672 12.110811
261 55206.6 23.230883 1.649976 0.658191
262 55206.6 25.121049 0.293760 3.696892
263 55206.6 24.758768 0.206120 5.268770
这可以相对简单地使用
导致
seaborn是一条路要走。要绘制分布,seaborn库中有几个选项:sns.distplot()、sns.kdeplot()、sns.boxplot()、sns.histplot()。就我个人而言,我喜欢使用sns.distplot(),因为它为您提供了显示直方图和曲线的选项。我非常感谢您。我一直被困在这个问题上,你可以用两行代码来完成。这太棒了,谢谢你让我接触到Seaborn的histplot函数!我想问你是怎么得到这些颜色的?我还想问你是怎么得到x轴的。Mag值应该在14-26之间,我对如何得到负值特别困惑没有问题!Seaborn使用列的名称获取轴和图例的标签。负值是由于我生成的示例数据造成的,因为您没有提供完整的数据集。
import pandas as pd
import numpy as np
import seaborn as sns
# construct some sample data
ps1_phot = pd.concat([pd.DataFrame({'FLT': flt, 'MAG': np.random.randn(1000) + i}) for i, flt in enumerate('girz')])
# plot overlapping histograms
sns.histplot(ps1_phot.dropna(subset=['MAG']), x='MAG', hue='FLT')