在Python中,如何在一个面板内重叠有关数据框的直方图?
In Python, how to overlap histogram graphs about data frame inside one panel?
我对 Python 中一个面板内的重叠图表有疑问。
我生成了两组数字
import numpy as np
cv1 = np.random.normal(50, 4, 1000)
cv2 = np.random.normal(40, 7, 1000)
import matplotlib.pyplot as plt
plt.hist(cv1, numpy.linspace(0, 70, 100))
plt.hist(cv2, numpy.linspace(0, 70, 100))
plt.xlabel("Grain weight (mg)", size=12)
plt.ylabel("Frequency_Histogram", size=12)
plt.show()
效果很好。但是,如果数据是data frame的格式,如何做成一样的图呢?
比如我模拟我有两个不同基因型的数据集,cv1,cv2。在每个数据中,测量了 1,000 粒谷物的粒重。
cv1_data = {"Genotype": ["cv1"]*1000,"AGW": cv1}
cv1_weight = DataFrame(cv1_data)
cv2_data = {"Genotype": ["cv2"]*1000,"AGW": cv2}
cv2_weight = DataFrame(cv2_data)
然后,我想制作与上面相同的图表。所以我尝试了以下代码
plt.hist(cv1,y="AGW", numpy.linspace(0, 70, 100))
plt.hist(cv2,y="AGW", numpy.linspace(0, 70, 100))
plt.xlabel("Grain weight (mg)", size=12)
plt.ylabel("Frequency_Histogram", size=12)
plt.show()
但它不起作用。你能告诉我如何在数据框的情况下制作相同的重叠图吗?
总是,非常感谢!!!
您可以使用 python
中的 Seaborn 库来做到这一点
import numpy as np
import pandas as pd
import seaborn as sns
cv1 = np.random.normal(50, 4, 1000)
cv2 = np.random.normal(40, 7, 1000)
cv1_data = {"Genotype": ["cv1"]*1000,"AGW": cv1}
cv1_weight = pd.DataFrame(cv1_data)
cv2_data = {"Genotype": ["cv2"]*1000,"AGW": cv2}
cv2_weight = pd.DataFrame(cv2_data)
df = pd.concat([cv1_weight,cv2_weight],axis = 1)
df.columns = ['Genotype', 'cv1_AGW', 'Genotype', 'cv2_AGW']
sns.histplot(data = df[['cv1_AGW','cv2_AGW']])
我对 Python 中一个面板内的重叠图表有疑问。
我生成了两组数字
import numpy as np
cv1 = np.random.normal(50, 4, 1000)
cv2 = np.random.normal(40, 7, 1000)
import matplotlib.pyplot as plt
plt.hist(cv1, numpy.linspace(0, 70, 100))
plt.hist(cv2, numpy.linspace(0, 70, 100))
plt.xlabel("Grain weight (mg)", size=12)
plt.ylabel("Frequency_Histogram", size=12)
plt.show()
效果很好。但是,如果数据是data frame的格式,如何做成一样的图呢?
比如我模拟我有两个不同基因型的数据集,cv1,cv2。在每个数据中,测量了 1,000 粒谷物的粒重。
cv1_data = {"Genotype": ["cv1"]*1000,"AGW": cv1}
cv1_weight = DataFrame(cv1_data)
cv2_data = {"Genotype": ["cv2"]*1000,"AGW": cv2}
cv2_weight = DataFrame(cv2_data)
然后,我想制作与上面相同的图表。所以我尝试了以下代码
plt.hist(cv1,y="AGW", numpy.linspace(0, 70, 100))
plt.hist(cv2,y="AGW", numpy.linspace(0, 70, 100))
plt.xlabel("Grain weight (mg)", size=12)
plt.ylabel("Frequency_Histogram", size=12)
plt.show()
但它不起作用。你能告诉我如何在数据框的情况下制作相同的重叠图吗?
总是,非常感谢!!!
您可以使用 python
中的 Seaborn 库来做到这一点import numpy as np
import pandas as pd
import seaborn as sns
cv1 = np.random.normal(50, 4, 1000)
cv2 = np.random.normal(40, 7, 1000)
cv1_data = {"Genotype": ["cv1"]*1000,"AGW": cv1}
cv1_weight = pd.DataFrame(cv1_data)
cv2_data = {"Genotype": ["cv2"]*1000,"AGW": cv2}
cv2_weight = pd.DataFrame(cv2_data)
df = pd.concat([cv1_weight,cv2_weight],axis = 1)
df.columns = ['Genotype', 'cv1_AGW', 'Genotype', 'cv2_AGW']
sns.histplot(data = df[['cv1_AGW','cv2_AGW']])