Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib中的气泡图或热图_Python_File_Pandas_Matplotlib_Seaborn - Fatal编程技术网

Python matplotlib中的气泡图或热图

Python matplotlib中的气泡图或热图,python,file,pandas,matplotlib,seaborn,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,Lond

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

输入:

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()
我试图将
放置
作为
x轴
名称
作为
y轴
大小
计数(00:00)
中提取。我找不到太多的例子。任何有价值的建议都被采纳了。提前谢谢。 为什么在(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
回溯(最近一次呼叫最后一次):
文件“Bubble_plot.py”,第18行,在
ax.scatter(df['Place'],df['Name'],s=df['00:00'])增加了第三个可变收入作为泡沫的大小
文件“/usr/lib/pymodules/python2.7/matplotlib/axes.py”,第6266行,分散显示
x、 y,s,c=cbook。删除屏蔽点(x,y,s,c)
文件“/usr/lib/pymodules/python2.7/matplotlib/cbook.py”,第1774行,删除屏蔽点
raise VALUERROR(“第一个参数必须是序列”)
ValueError:第一个参数必须是序列

我希望通过将“Name”和“Place”改为“categoricals”来实现这一点,但在这方面运气不佳(无论是情节还是seaborn)。如果您将它们转换为整数,那么它基本上是有效的,但随后您会丢失字符串或类别的标签。FWIW:

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'])

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

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' ) )

你的问题是什么?你的帖子里没有一个问号。什么失败了?请说得更具体一点。嗯,这列不是叫
'00:00'
(而不是
'00:00'
)吗?!你不能用字符串作为坐标绘制散点图。@mwaskom--我把seaborn标签放回b/c,看起来seaborn热图可能是一个有用的解决方案。如果您不希望seaborn标签显示在那里,请重新删除它。@JohnE seaborn解决方案很好。。顺其自然。你只是个救生员:)我也在考虑热图。是否可能有
count
00:00:00
的批注?
annot=True
,尽管其格式为浮点而不是整数。不确定是否有办法改变这种状况。你也可以只打印pivot_表本身。好的,我不确定w.r.t.seaborn是否准确。你可能想发布一个跟进问题,专门针对这个问题。你肯定可以在一个透视表中放置多个aggfunc,我只是不确定是否要立即将所有这些转换为热图。
fmt=d
,因为@SitzBlogz类别是熊猫的一个新特性。您可能需要更新您的版本--可能是0.16。