Сделать 2D-график плотности из словаря Python

У меня есть словарь, который содержит несколько значений для каждого ключа.

dict = {'400.0': [0.051198, 0.051198, 0.045406, 0.15855, 0.33586, 0.079011, 0.085342], '420.0': [0.046287, 0.046287, 0.0061685, 0.099437, 0.27868, 0.093667, 0.093032], '440.0': [0.046454, 0.046454, 0.0015765, 0.052886, 0.23238, 0.084899, 0.088889], '460.0': [0.041944, 0.041944, 0.0083426, 0.027038, 0.19666, 0.032842, 0.07963], '480.0': [0.025476, 0.025476, 0.021437, 0.02845, 0.16916, 0.066085, 0.11551], '500.0': [0.037221, 0.037221, 0.02546, 0.01049, 0.14636, 0.15647, 0.17047], '520.0': [0.020769, 0.020769, 0.057708, 0.013889, 0.11284, 0.17052, 0.15862], '540.0': [0.0029368, 0.0029368, 0.086186, 0.026225, 0.090237, 0.098873, 0.072785], '560.0': [0.0024553, 0.0024553, 0.1034, 0.057088, 0.077615, 0.048153, 0.037146], '580.0': [0.020523, 0.020523, 0.105, 0.076162, 0.067578, 0.047222, 0.062943], '600.0': [0.042838, 0.042838, 0.09883, 0.077351, 0.056873, 0.048235, 0.096264], '620.0': [0.05615, 0.05615, 0.096128, 0.073473, 0.046765, 0.031932, 0.10801], '640.0': [0.065999, 0.065999, 0.093658, 0.088445, 0.040698, 0.0082049, 0.095002], '660.0': [0.099263, 0.099263, 0.074047, 0.13282, 0.041967, 0.016028, 0.1117], '680.0': [0.14634, 0.14634, 0.028374, 0.19581, 0.071541, 0.036822, 0.14719], '700.0': [0.13285, 0.13285, 0.023217, 0.23739, 0.0053786, 0.059918, 0.17545]}

Ключи - это значения «x», а значения словаря - это значения «y».

Теперь я хотел бы сделать график плотности. Возможно ли это с помощью matplotlib, и если да, то как? Большое тебе спасибо.

Обновлено:

Считаю plt.imshow хорошим вариантом

вам нужно будет прочитать документы matplotlib, затем попробовать написать код, и, если эта попытка не удастся, опубликуйте свой код и скажите, что вы ожидали получить и что получили взамен.

Chillie 13.09.2018 16:44

@ Чилли, понятно. Спасибо за комментарий.

james 13.09.2018 16:45
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
755
3

Ответы 3

Думаю, это сделает всю работу. Пожалуйста, проверьте и дайте мне знать. Спасибо.

import pandas as pd
import matplotlib.pyplot as plt


dict1 = {
        '400.0': [0.051198, 0.051198, 0.045406, 0.15855, 0.33586, 0.079011, 0.085342],
        '420.0': [0.046287, 0.046287, 0.0061685, 0.099437, 0.27868, 0.093667, 0.093032],
        '440.0': [0.046454, 0.046454, 0.0015765, 0.052886, 0.23238, 0.084899, 0.088889],
        '460.0': [0.041944, 0.041944, 0.0083426, 0.027038, 0.19666, 0.032842, 0.07963],
        '480.0': [0.025476, 0.025476, 0.021437, 0.02845, 0.16916, 0.066085, 0.11551],
        '500.0': [0.037221, 0.037221, 0.02546, 0.01049, 0.14636, 0.15647, 0.17047],
        '520.0': [0.020769, 0.020769, 0.057708, 0.013889, 0.11284, 0.17052, 0.15862],
        '540.0': [0.0029368, 0.0029368, 0.086186, 0.026225, 0.090237, 0.098873, 0.072785],
        '560.0': [0.0024553, 0.0024553, 0.1034, 0.057088, 0.077615, 0.048153, 0.037146],
        '580.0': [0.020523, 0.020523, 0.105, 0.076162, 0.067578, 0.047222, 0.062943],
        '600.0': [0.042838, 0.042838, 0.09883, 0.077351, 0.056873, 0.048235, 0.096264],
        '620.0': [0.05615, 0.05615, 0.096128, 0.073473, 0.046765, 0.031932, 0.10801],
        '640.0': [0.065999, 0.065999, 0.093658, 0.088445, 0.040698, 0.0082049, 0.095002],
        '660.0': [0.099263, 0.099263, 0.074047, 0.13282, 0.041967, 0.016028, 0.1117],
        '680.0': [0.14634, 0.14634, 0.028374, 0.19581, 0.071541, 0.036822, 0.14719],
        '700.0': [0.13285, 0.13285, 0.023217, 0.23739, 0.0053786, 0.059918, 0.17545]}

df = pd.DataFrame(dict1)

df.plot.density()
plt.show()

Это близко, но это не совсем то, к чему я стремился, мне скорее нужно что-то вроде этого: python-graph-gallery.com/85-de density-plot-with-matplotlib

james 13.09.2018 16:51

Если вы хотите использовать ключи по оси X и значения по оси Y, вы можете просто:

import matplotlib.pylab as plt

fig=plt.figure();
ax=fig.add_subplot(111);
ax.plot(dict.keys(),dict.values(),marker='.',ms=10,linestyle='none');
plt.show();

Тем не менее, это всего лишь диаграмма рассеяния. Что вы имеете в виду под плотностью?

Спасибо за ответ, я имел в виду график 2D Density, как здесь: python-graph-gallery.com/…

james 13.09.2018 16:52

@james В вашем случае длина x-данных (dict.keys ()) и y-данных (dict.values ​​()) различается, но, по крайней мере, возможна диаграмма рассеяния.

msi_gerva 13.09.2018 16:59

Это то, что вы хотите ?

import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(dict1)
z=df.values


fig, ax = plt.subplots(figsize=(6,6))
plt.imshow(z,
           origin='lower', aspect='auto',
           extent=[0, 3, 0, 1])
plt.colorbar();

Да ! Большое спасибо ! :)

james 13.09.2018 17:29

Другие вопросы по теме