Mahdi Hasanzadeh Ответов: 1

Как я могу построить график с помощью histogram2d в Python?


У меня есть некоторые данные, и я хочу прочитать 5-й и 6-й столбцы, чтобы построить их 2D-гистограмму. Я написал следующий код, но он терпит неудачу. Я был бы признателен, если бы кто-то мог помочь мне в этом процессе.

Существует сообщение об ошибке измерения, которое я не понимаю, что-то вроде: "размер ячеек должен быть равен размеру образца x."
Я предоставил код, который я пробовал. Любое предложение очень ценится.

Вот ссылка на мои выборочные данные.
https://gofile.io/d/U4NT0e[^]

Что я уже пробовал:

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

path = r'D:\test_file\data\final.txt'
df = pd.read_csv( path , header = None, sep = '   ', dtype = float, engine = 'python')
df1 = df[4].to_string()
df2 = df[5].to_string()

lmin = -1
lmax = 1
nbins = 100    
xedge = np.linspace(lmin, lmax, nbins + 1)
yedge = np.linspace(lmin, lmax, nbins + 1)
fxyz = np.zeros((nbins,nbins))

weight = None
hist,xedges,yedges=np.histogram2d(df1, df2, bins=(xedge,yedge), normed=True, weights=weight)
fxyz += hist.T
extent = (xedges[0],xedges[-1],yedges[0],yedges[-1])  
with np.errstate(divide='ignore',invalid='ignore'):
    plt.figure(figsize=(10,6))
    images = plt.imshow(np.log10(fxyz),  origin='lower', extent=extent,cmap='jet')
    plt.ylim(0,0.7); plt.xlim(-0.7,0.7)
    plt.show()

Richard MacCutchan

Когда вы получите сообщение об ошибке, пожалуйста, добавьте полный текст к вашему вопросу и укажите, какая строка кода вызвала его появление

Mahdi Hasanzadeh

кандидат исторических наук,xedges,yedges=НП.histogram2d(df_pe, df_pa, ящики=(xedge,yedge), нормированных=true, то вес=вес)
Файл "D:\Anaconda\lib\site-packages\numpy\lib\twodim_base.py", строка 655, в гистограмме2d
кандидат исторических наук, кромки = histogramdd([Х, Y], урны, спектр, нормированный, Весов)
Файл "D:\Anaconda\lib\site-packages\numpy\lib\function_base.py", строка 917, в гистограмме.
"Размер бункеров должен быть равен размеру"
ValueError: размер ячеек должен быть равен
равна размерности образца x.

Mahdi Hasanzadeh

Спасибо за ваш любезный ответ и ответ на мой вопрос.

Gerry Schmitz

Похоже, что ваш Csv "подсчет столбцов / индексация" может быть отключен.

Mahdi Hasanzadeh

Спасибо за ответ. но что вы имеете в виду? Я распечатываю df1 и df2. Хотя они выглядят правильно.

Gerry Schmitz

Что же это делает? (Вы говорите, что строите столбцы "2" )

nbins = 100

Mahdi Hasanzadeh

Это число бункеров в каждом направлении. Мне нужно секционировать домен, чтобы построить гистограмму.

MehreenTahir

Вы пробовали hist2d из matplotlib.pyplot? Кроме того, было бы полезно, если бы вы указали набор данных, который используете, и да, пожалуйста, добавьте полное сообщение об ошибке и строку, в которой вы получаете ошибку.

Mahdi Hasanzadeh

Спасибо за ответ. Я предоставил ссылку на выборку данных.

1 Ответов

Рейтинг:
8

Richard MacCutchan

df1 = df[4].to_string()
df2 = df[5].to_string()

# ...

hist,xedges,yedges=np.histogram2d(df1, df2, bins=(xedge,yedge), normed=True, weights=weight)
fxyz += hist.T

Ты звонишь to_string() о переменных, которые уже являются строками, Читайте из текстового файла. Затем вы передаете эти строки в np.histogram2d который ожидает два массива в самых огненных двух параметрах.

Видеть документация pandas.read_csv — pandas 1.1.2[^] и и NumPy.histogram2d — библиотеки numpy версии v1.19 руководство по эксплуатации[^].