python - matplotlib 中的气泡图或热图

标签 python file pandas matplotlib seaborn

我正在尝试绘制一个动态大小的气泡(散点图)。当我尝试用随机数据绘制时,我可以很好地绘制。但是当我试图解析我的输入文件时,我无法绘制。

输入:

Nos,Place,Way,Name,00:00:00,12:00:00
123,London,Air,Apollo,342,972
123,London,Rail,Beta,2352,342
123,Paris,Bus,Beta,545,353
345,Paris,Bus,Rava,652,974
345,Rome,Bus,Rava,2325,56
345,London,Air,Rava,2532,9853
567,Paris,Air,Apollo,545,544
567,Rome,Rail,Apollo,5454,5
876,Japan,Rail,Apollo,644,54
876,Japan,Bus,Beta,45,57

程序:

import pandas as pd
from pandas import DataFrame
import pandas.io.data
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns


df=pd.read_csv('text_2.csv')


#SIZE OF BUBBLES CHANGES

fig = plt.figure()

ax = fig.add_subplot(1,1,1)

ax.scatter(df['Place'],df['Name'], s=df['00:00:00']) # Added third variable income as size of the bubble


plt.show()

我正在尝试将 Place 作为 x 轴 并将 Name 作为 y 轴Size 取自 count(00:00)。相当大的泡沫我找不到太多的例子。任何有值(value)的建议都会被采纳。提前致谢。 为什么我在 (00:00) 列出现错误以及如何传递该列的值?

错误:

    Traceback (most recent call last):
  File "Bubble_plot.py", line 18, in <module>
    ax.scatter(df['Place'],df['Name'], s=df['00:00:00']) # Added third variable income as size of the bubble
  File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 6266, in scatter
    x, y, s, c = cbook.delete_masked_points(x, y, s, c)
  File "/usr/lib/pymodules/python2.7/matplotlib/cbook.py", line 1774, in delete_masked_points
    raise ValueError("First argument must be a sequence")
ValueError: First argument must be a sequence

最佳答案

我希望这可以通过将“名称”和“地点”更改为分类来实现,但运气不好(无论是 plot 还是 seaborn)。如果您将它们转换为整数,它基本上会起作用,但随后您会丢失字符串或分类标签。前者:

df2 = df.copy()
for c in ['Place','Name']:
    df2[c] = df2[c].astype('category').cat.codes

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(df2['Place'],df2['Name'], s=df2['00:00:00'])

enter image description here

或者也许热图会更好?它似乎接受分类,因此您可以免费获得标签。

df3 = df.copy()
for c in ['Place','Name']:
    df3[c] = df3[c].astype('category')

sns.heatmap( df3.pivot_table( index='Place', columns='Name', values='00:00:00' ) )

enter image description here

关于python - matplotlib 中的气泡图或热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31069153/

相关文章:

python - 查找列表元素所有可能方式的差异

java - 通用标志的 Android 2.3 ZIP 问题

python for循环作为函数中的elif语句

python - 从 pandas DataFrame 计算 RSI 指标?

python - 为什么边界框搜索执行时间太长?

python - 在 Bokeh 中使用 TapTool 设置图形范围

python - xgboost 中的访问训练和评估错误

java - 分割坐标从文件 Java 中读入

javascript - 从 Javascript 读取 JAR 的 list 文件内容

python-3.x - 删除 Pandas 数据框中的小数列